您的当前位置:首页正文

基于HTTP通信的一些安全性测试方法

2023-05-08 来源:汇智旅游网
基于HTTP通信的一些安全性测试方法

基于HTTP通信的安全性测试方法 ................................................................................................ 1

1、Web网页安全测试的一些方法 ........................................................................................ 2

2、常见SQL、Xss注入字符 ................................................................................................. 13

3、webscarab检测工具 ........................................................................................................ 13

4、自动化SQL、Xss检测 ..................................................................................................... 13

1、Web网页安全测试的一些方法

下文取自2011年我在《51测试天地》杂志中发表的一篇有关安全性测试的专题文章,该文详细地介绍了比较常规的一些网页安全的测试方法和实例。

2、常见SQL、Xss注入字符

见下文附件中所示 sq_xss.txt

3、webscarab检测工具

WebScarab使用说明.xls

4、自动化SQL、Xss检测

a)、利用loadrunner实现检测

由于sq_xss.txt中的字符存在转义字符,而这些转义字符是不能够直接放入loadrunner的data池文件中的,会报以下错误。另,由于loadrunner从db读取文件的方式仍然是读取后存在到file文件的方式,故仍然会报下面的错误。

Loadrunner读取DB:

1. 将libmysql.dll放入loadrunner的文件目录中

2.Add Files toScript

3.如下面的代码一样构造脚本

SQLXSSMain() {

int rc;

int db_connection; int query_result; char** result_row;

char *server=\"127.0.0.1\"; char *user=\"root\";

char *password=\"wenshanhao\"; char *database=\"test\";

int port=3308;

int unix_socket=NULL; int flags=0;

rc=lr_load_dll(\"libmysql.dll\"); if(rc!=0) { lr_error_message(\"引入libmysql.dll失败\"); lr_abort(); }

db_connection=mysql_init(NULL); if(db_connection==NULL) {

lr_error_message(\"内存引用失败\"); lr_abort(); }

rc=mysql_real_connect(db_connection,server,user,password,database,port,unix_socket,flags);

if(rc==NULL) {

lr_error_message(\"连接mysql失败\"); mysql_close(db_connection); lr_abort(); }

rc=mysql_query(db_connection,\"select * from value\"); if(rc!=0) { lr_error_message(\"%s\ mysql_close(db_connection); lr_abort(); }

query_result=mysql_use_result(db_connection); if(query_result==NULL) { lr_error_message(\"%s\ mysql_free_result(query_result); mysql_close(db_connection); lr_abort(); }

while(1) { result_row=(char **)mysql_fetch_row(query_result); if(result_row==NULL) { lr_error_message(\"%s\ mysql_free_result(query_result); mysql_close(db_connection); //lr_abort(); break; } lr_save_string(result_row[0],\"paramXss\"); //lr_output_message(\"paramXss is :%s\ web_custom_request(\"userInfoManager.ashx\

\"URL=http://192.168.102.71:6061/action/userInfoManager.ashx?opKey=LoginEx&\"

\"rand=0.44543948071077466&callBack=jQuery17208856977436225861_1372647354524&\"

\"username=qwen1&userpassword={paramXss}&rm=1&_=1372647365614\ \"Method=GET\ \"Resource=0\ \"RecContentType=text/html\ \"Referer=\ \"Snapshot=t1.inf\ \"Mode=HTTP\ LAST); /* web_custom_request(\"RemoteLogin.aspx\ \"URL=http://192.168.102.71:6061/RemoteLogin.aspx?\" \"sessionID={sessionID}&remoteCode={remoteCode}\" \"&urlPath=http://192.168.102.71:6060/AccountMgr/LogOn2\ \"Method=GET\ \"Resource=0\

\"RecContentType=text/html\ \"Referer=\ \"Snapshot=t2.inf\ \"Mode=HTTP\ LAST);*/ }

mysql_free_result(query_result); mysql_close(db_connection);

return 0; }

4. 运行时设置

5.查看日志,观察服务器返回的内容是否有异常。

b)、利用python实现检测

原理同上,优势在于编程的灵活性,效率以及处理日志的灵活性。

import httplib2

import MySQLdb as mySql import MySQLdb.cursors

import urllib import os

def write(words):

fl = open(r\"mytest.txt\",\"ab\") nwords=\"测试数据:%s\\r\\n\" %(words) fl.write(nwords) fl.close() def textData():

mysql_con=mySql.connect('127.0.0.1','root','wenshanhao','test',3308,'utf8')

mysql_cur=mysql_con.cursor(mySql.cursors.DictCursor) monitorKeyBufferSql=\"select * from xss\" mysql_cur.execute(monitorKeyBufferSql) allKey=mysql_cur.fetchall()

return allKey def sqlLogin(): allKey=textData() for x in allKey: data=x['value']

url=\"http://192.168.102.43:8082/action/userInfoManager.ashx?opKey=LoginEx&rand=0.333376003196463&callBack=jQuery17201\\

7676877160556614_1370487276097&username=qwen2%s&userpassword=123456%s&rm=1%s&_=1370487288833%s\"%('','','',data) htp=httplib2.Http() r,c=htp.request(url)

if \"\"\"\"State\": true\"\"\" in c:

write(c)

文青山 2013-7-1

因篇幅问题不能全部显示,请点此查看更多更全内容