python如何实现代码审计
发表于:2025-12-02 作者:千家信息网编辑
千家信息网最后更新 2025年12月02日,这篇文章给大家分享的是有关python如何实现代码审计的内容。小编觉得挺实用的,因此分享给大家做个参考,一起跟随小编过来看看吧。python 代码审计-命令执行漏洞(自己编写的代码)0x00 源代码d
千家信息网最后更新 2025年12月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安全错误
数据库的锁怎样保障安全
东莞互联网科技企业
网络安全主题内容简单
结构化软件开发最关键的步骤
gpu服务器核数
宣城点餐系统软件开发
没有公网ip服务器如何搭建网站
打卡数据库怎么设置
交警大队网络安全应急预案
solr的数据库一对多配置
九牛科技互联网
谷歌代理服务器怎么关掉
设置网关和代理服务器
杨浦区先进网络技术采购信息
软件开发fbi
计算机网络技术与网络信息安全
计算机网络技术可以就业的公司
c++网络安全工具编程
浪潮服务器ilo是管理口吗
联想服务器硬盘坏了
update无法连接到该服务器
首都网络安全日那年设定
数据库正处于还原操作中
网络技术中级职称考试科目
assess数据库中通配符
数据库成绩计算
长沙互动博物馆软件开发
通信网络技术题库
黑芒君服务器的编号是什么
在软件开发中成本-效益分析
山东网络安全专业研究院