python如何实现代码审计
发表于:2026-11-02 作者:千家信息网编辑
千家信息网最后更新 2026年11月02日,这篇文章给大家分享的是有关python如何实现代码审计的内容。小编觉得挺实用的,因此分享给大家做个参考,一起跟随小编过来看看吧。python 代码审计-命令执行漏洞(自己编写的代码)0x00 源代码d
千家信息网最后更新 2026年11月02日python如何实现代码审计
这篇文章给大家分享的是有关python如何实现代码审计的内容。小编觉得挺实用的,因此分享给大家做个参考,一起跟随小编过来看看吧。
python 代码审计-命令执行漏洞(自己编写的代码)
0x00 源代码
def execute(request): context ={} ip= request.POST.get("ip") username= request.POST.get("username") password= request.POST.get("password") idnex= int(request.POST.get("index")) current_time=request.POST.get("time") context = {"ip":ip,"username":username,"password":password,"result":False} ippattern="(25[0-5]|2[0-4]\d|[0-1]\d{2}|[1-9]?\d)\.(25[0-5]|2[0-4]\d|[0-1]\d{2}|[1-9]?\d)\.(25[0-5]|2[0-4]\d|[0-1]\d{2}|[1-9]?\d)\.(25[0-5]|2[0-4]\d|[0-1]\d{2}|[1-9]?\d)" if(re.match(ippattern,ip)): pass else: context['error']="ip格式不正确" log("error","[-]%s ip is error"%(ip)) print ("[-]%s ip格式不正确"%(ip)) #return render(request, 'test.html', context) return HttpResponse(json.dumps(context)) try: length,scripts=executeScript.getScriptNums() if(idnex>length or idnex<1): context['error']="脚本索引值错误" log("error","[-]%s %s %s Script index value error"%(ip,str(length),str(index))) print ("[-]%s %s %s 脚本索引值错误"%(ip,str(length),str(index))) return HttpResponse(json.dumps(context)) script=scripts[idnex-1] #判断是否是端口扫描 if("port_scan" in script): current_path=os.getcwd() payload="python %s//jixianjiancha/check/%s %s"%(current_path,script,ip) commandResult=commands.getoutput(payload) result=ast.literal_eval(commandResult)0x01 代码执行漏洞原因分析
第一步:获取前台传入的ip: ip= request.POST.get("ip")
第二步:判断输入的ip是否合法
ippattern="(25[0-5]|2[0-4]\d|[0-1]\d{2}|[1-9]?\d).(25[0-5]|2[0-4]\d|[0-1]\d{2}|[1-9]?\d).(25[0-5]|2[0-4]\d|[0-1]\d{2}|[1-9]?\d).(25[0-5]|2[0-4]\d|[0-1]\d{2}|[1-9]?\d)"
if(re.match(ippattern,ip)): passelse:
这段代码仔细一看,只是判断了ip是否以正常ip开头,比如 12.12.121.12,只要是以正常ip开头的,就可以通过ip的检测。比如输入的ip为:127.0.0.1; ping -c 1 127.0.0.1
第三步:
payload="python %s//jixianjiancha/check/%s %s"%(current_path,script,ip)
commandResult=commands.getoutput(payload)
将判断后的ip直接拼接到payload中,然后使用commands命令执行函数执行命令
由于ip过滤不严格,所以会造成任意命令执行漏洞
0x02 修复方案
修复改问题主要是要严格过滤ip,因此将ip以'.'分割成4份,判断每一份是否是数字,如果不是全是则表名输入的ip不合法。
ip= request.POST.get("ip")testip=ip.split(".")if(testip[0].isdigit() and testip[1].isdigit() and testip[2].isdigit()and testip[3].isdigit()): passelse: context['error']="ip格式不正确" log("error","[-] %s ip is error"%(ip))感谢各位的阅读!关于"python如何实现代码审计"这篇文章就分享到这里了,希望以上内容可以对大家有一定的帮助,让大家可以学到更多知识,如果觉得文章不错,可以把它分享出去让更多的人看到吧!
代码
命令
审计
格式
漏洞
输入
内容
开头
更多
篇文章
索引
脚本
错误
不错
合法
实用
函数
前台
原因
原因分析
数据库的安全要保护哪些东西
数据库安全各自的含义是什么
生产安全数据库录入
数据库的安全性及管理
数据库安全策略包含哪些
海淀数据库安全审计系统
建立农村房屋安全信息数据库
易用的数据库客户端支持安全管理
连接数据库失败ssl安全错误
数据库的锁怎样保障安全
互联网扶贫科技
互联网科技与金融科技
华宇互联网科技
万易互联网科技
小马过河互联网科技
互联网校园科技培训
全球顶尖互联网科技公司
厦门比较好的科技互联网公司
武汉健翔互联网络科技有限公司
坤平互联网科技
呼和浩特新华互联网科技学院
乌鲁木齐新华智原互联网科技学校
2021互联网科技公司排名
江苏苏星互联网科技有限公司
皮皮虾互联网科技有限公司
互联网科技股为什么大涨
科技互联网经济论坛
美国五大互联网科技公司市值多少
广州三三互联网科技有限公司
互联网科技大佬云集
互联网科技活动banner
未来的互联网科技
菲比寻常互联网科技
广州善班互联网科技
齐家互联网科技有限公司
深圳期待互联网科技
厦门比较好的科技互联网公司
风投北京互联网科技
上海万顺科技互联网有限公司招聘
玉溪新华互联网科技怎么选