python如何实现代码审计
发表于:2025-01-22 作者:千家信息网编辑
千家信息网最后更新 2025年01月22日,这篇文章给大家分享的是有关python如何实现代码审计的内容。小编觉得挺实用的,因此分享给大家做个参考,一起跟随小编过来看看吧。python 代码审计-命令执行漏洞(自己编写的代码)0x00 源代码d
千家信息网最后更新 2025年01月22日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安全错误
数据库的锁怎样保障安全
图书借阅数据库oracle
网络安全技术有限公司名字
青岛乐天网络技术有限公司
宜春软件开发公司电话
qq上的网络安全巡查员是真的吗
服务器 不执行 js
黄浦区一站式网络技术质量推荐
微信公众号服务器配置
数据库应用与技术 教学
秀米h5表单数据库
工业控制系统网络安全剖析
好玩吧软件开发商
苏州微信软件开发代码
新苹果手机换机后无法连接服务器
河南品质软件开发服务价钱
达梦数据库数据写入
2021年国家网络安全政策
我的世界生化大逃杀服务器指令
学校网络安全的情况
戴尔服务器拆装硬盘
瑶海区软件开发培训班
如何建立云端数据库
网络安全产品海报背景
江苏管理软件开发技术指导
阿里云服务器个人网站
云服务器的预装环境
更换服务器 域名备案
视觉软件开发需要学习哪些课程
奥比岛服务器
建设网络强国 强化网络安全