渗透笔记1

news/2025/1/18 19:15:17/

第一天

工具:cs cobalt strike 4.9  / msf kali (自带 Ubuntu)

cs cobalt strike 4.9:server-client

server部署在云服务器上,client分别在各地,与server相连接;连接上后就可以共享上线主机。

对于server主要执行主件是teamserver和TeamServerImage,他们是用Java写的,所以要jdk的依赖,Windows和Ubuntu都需要下载安装,用命令java -version查看是否安装成功

运行server

root@ubuntu:~/cs4.9/Server# ./teamserver 192.168.59.147 oupeng  (IP 密码)
反弹性木马:反向,受害者主动连接入侵者,内网往外网走,所以防火墙对此管理没有严格;如果受害者不知道入侵者的ip地址,那么受害者是连接不到入侵者的。(这就是为什么用反弹性木马和为什么要写ip)

打开client,监听木马:创建一个监听器(设置不常用的端口),方便你知道受害者何时连接的你

案例一:

假设我们是一个红队入侵者,我们需要去攻击某个学校 ,但学校的安全做的不错,没有明显的漏洞,现有的系统接入0信任,需要一个老师或者学生账号
1、用钓鱼邮件并且通过免杀木马让学生或老师中招
2、第一种(等待):利用远程控制木马的键盘监听器去监听等待,如果他输入账号,那么就能得到他的账号和密码 ———— 效率太低第二种(主动出击):让他主动写入自己的学号或教师账号以及密码
3、要一个钓鱼网站 ———— 学校的官网(直接将源码另存为)
4、关键问题:如何他去走进你的钓鱼网站 
5、现已将代码部署到自己的网站,但没有学校域名的权限(没有办法让域名解析到自己的服务器上)
6、解决方法:仿造一个相似域名,可取性为0    edu.cn申请不到https://www.cdcas-edu.com  成功率较低 
8、现已让对方中木马,所以要做出hosts ———— dns劫持 ———— 劫持dns解析,让其解析到自己的服务器上
9、dns解析流程 ———— 才能知道hosts为什么可以dns劫持
hosts的Windows路径:C:\Windows\System32\drivers\etc\hosts
10、问题:在自己的电脑或者linux服务器上部署一个web应用需要什么组件 ———— web中间件  
web中间件:nginx (apache toimcat weblogic)
12、部署nginx服务,windows可以用小皮面板;要配置虚拟主机才可以让域名解析到本地
虚拟主机是否能够匹配到这个,需要看虚拟主机的配置项
位置:D:\phpstudy_pro\Extensions\Nginx1.15.11\conf\vhosts\0localhost_80.conf
用vscode打开配置(复制粘贴后修改server_name、root),完成后重启小皮的nginx
当别人访问登录后,服务器上就能获取到他的账号和密码,在D:\phpstudy_pro\WWW\服务器名\account.txt中
13、问题
1. dns解析过程 
(1)查询本地 ———— 查询缓存 
(2)本地缓存没有,就到hosts查看是否有域名和ip的对应关系 如果有则返回
(3)都没有,则查本地路由 ————> 查询根域服务器 ————> dns ————> 13个根域服务器地址
(4)查找13台根域服务器
(5)寻找com顶级域寻找百度的dns服务器最终返回baidu.com的A的对应服务器ip迭代查询Windows和Linux下的dns解析命令:
linux:dig  nslookup
例:xyl@ubuntu:~$ dig +trace www.baidu.comxyl@ubuntu:~$ nslookup www.baidu.comWindows:nslookup ———— nslookup www.baidu.com2. web中间件的部署和搭建(linux)
搭建LNMP和WNMP
LNMP: linux nginx mysql php
WNMP: Windows nginx(小皮面板) mysql php也可以docker搭建(过程没那么繁琐)
https://command-not-found.com/ 可以寻找安装包的命令3 如何配置web中间件的虚拟主机总结4步:1.中c2(免杀)  2.劫持dns  3.让他登录钓鱼网站 4.拿下他的账号密码 

Ubuntu安装nginx、mysql以及php的部署

nginx:
1、编译安装
# 复制22的链接地址(复制源码),用wget下载
wget https://nginx.org/download/nginx-1.22.1.tar.gz
tar -zxvf nginx-1.22.1.tar.gz
mv nginx-1.22.1 nginx 改名方便使用
cd nginx2、安装依赖包
apt-get install gcc
apt-get install libpcre3 libpcre3-dev
apt-get install zlib1g zlib1g-dev
apt-get install openssl 
apt-get install libssl-dev3、编译nginx
# 执行命令
./configure
# 执行make命令
make
# 执行make install命令
make install4、启动nginx
cd /usr/local/nginx/sbin
./nginx   启动nginx
ps -ef |grep nginx  查看进程
http://192.168.59.147/ 访问网站,查看是否成功,如下图一php:
1、添加数据源
# 执行三条命令,添加php的源地址,更新,安装
sudo apt-get install software-properties-common
sudo add-apt-repository -y ppa:ondrej/php
sudo apt-get update
apt list |grep php   查看是否有安装包2、安装php
#​ nginx使用php的话要用到php7.3-fpm,所以要安装php-fpm
sudo apt-get install php7.3 php7.3-mysql php7.3-fpm php7.3-curl php7.3-xml php7.3-gd php7.3-mbstring php-memcached php7.3-zip
# 默认是最高版本
pdate-alternatives --config php    修改版本
php -v   查看当前版本3、配置php-fpm
find / -name www.conf   用find查找文件
vim /etc/php/7.3/fpm/pool.d/www.conf
# 把监听端口改掉
将;listen = /run/php/php7.3-fpm.sock 改为listen = 127.0.0.1:9000
service php7.3-fpm restart   重启服务9.启动php-fpm
service php7.3-fpm restart
lsof -i:9000     查看9000端口是否开放  (netstat -lnt | grep 9000)10、nginx下要有配置文件才能和php-fpm相连接
cd /usr/local/nginx/conf/
vim nginx.conf
将以下内容注释取消,且修改结果如下:location ~ \.php$ {root           html;fastcgi_pass   127.0.0.1:9000;fastcgi_index  index.php;fastcgi_param  SCRIPT_FILENAME  $document_root$fastcgi_script_name;include        fastcgi_params;}# deny access to .htaccess files, if Apache's document root# concurs with nginx's one#location ~ /\.ht {deny  all;}
# 保存退出
# 重启nginx
root@ubuntu:/usr/local/nginx# cd sbin/
root@ubuntu:/usr/local/nginx/sbin# ./nginx -s reload# 检测配置是否成功
root@ubuntu:/usr/local/nginx# cd html/
root@ubuntu:/usr/local/nginx/html# vim web.php 
内容如下:
<?php phpinfo(); ?>http://192.168.59.147/web.php   访问该网站看是否配置成功,结果如图二mysql:
# 安装mysql
apt-get install mysql-server
# 连接mysql
mysql -uroot -p123这样有两个问题:1、mysql没有密码限制;2、mysql8.0和php7.3里的mysqli-connect不兼容
mysql -uroot -proot123//..
# 修改密码
mysql> alter user 'root'@'localhost' identified mysql_native_password by '123';vscode远程登陆Ubuntu,修改靶场文件中的mysql连接密码,与Ubuntu中的一致,
访问网站http://192.168.59.147/sqlilabs,得图三

nginx成功结果(图一):

nginx和php配置成功结果(图二):

图三:

第二天

名词解释:

名词解释

1.POC、EXP、Payload与Shellcode

POC:全称‘Proof of Concept',中文’概念验证’,常指一段漏洞证明的代码。EXP:全称'Exploit’,中文‘利用',指利用系统漏洞进行攻击的动作。Payload:中文‘有效载荷’,指成功exploit之后,真正在目标系统执行的代码或指令。Shellcode:简单翻译'shell代码',是Payload的一种,由于其建立正向/反向shell而得名。

poc就是用来做漏洞测试,不会进一步利用;比如执行某个命令来证明这个漏洞是可以执行的

exp相对于poc就会进一步利用,比如写入webshell网站后门等http://192.168.59.147/web.php

(<? php eval($_POST['123']); ?>)因为比较简单,被称为“一句话木马”

(网站后门起到控制整个网站的作用)

        问题:

        1.当你水平越来越高的时候,你的后门太多了不好管理

        2.后门的操作内容比较繁杂,是否可以有工作进行快捷管理

        方法:三款工具

webshell利用与管理工具:

(1)蚁剑 —— 师承中国菜刀

(2)冰蝎 —— rebeyond 他独创webshell加密机制——webshell —— 用Java写的要jdk

(3)哥斯拉——冰蝎类似

payload:比如webshell是一个脚本,那么他的源码就是payload

例:将web.php文件写成system($_GET['c']);执行命令函数——执行get传参——是一个命令执行漏洞

(php中system是执行外部程序,并且显示输出)

现在传一个id,就是一个poc测试,测试发现里面是有漏洞的,就开始考虑其他三个

如果在网址上执行echo 11111 > webshell.php,结果显示无法执行,因为nginx中起作用的worker权限是nobody,而html文件的权限是root,所以执行不成功,但一般来说nginx、php-fpm和html文件的所属者都会统一,修改权限后则能成功(chown -R  /  nginx.conf)

错误:1、权限问题;2、查看日志logs

shellcode是payload的一种,更多出现在远程控制木马里面(机器码 python/c)

2.几点注意

POC是用来证明漏洞存在的,EXP是用来利用漏洞的,两者通常不是一类,或者说,POC通常是无害的,Exp通常是有害的,有了POC,才有EXP。

Payload有很多种,它可以是Shellcode,也可以直接是一段系统命令。同一个Payload可以用于多个漏洞,但每个漏洞都有其自己的
EXP,也就是说不存在通用的EXP。

Shellcode也有很多种,包括正向的,反向的,甚至meterpreter。

Shellcode与Shellshcok不是一个,Shellshock特指14年发现的Shellshock漏洞。


http://www.ppmy.cn/news/1564222.html

相关文章

IM聊天学习资源

文章目录 参考链接使用前端界面简单效果消息窗口平滑滚动至底部vue使用watch监听vuex中的变量变化 websocket握手认证ChatKeyCheckHandlerNettyChatServerNettyChatInitializer 参考链接 zzhua/netty-chat-web - 包括前后端 vue.js实现带表情评论功能前后端实现&#xff08;仿…

源码编译安装httpd 2.4,提供系统服务管理脚本并测试

1.安装httpd wget https://downloads.apache.org/httpd/httpd-2.4.62.tar.gzbmcv tar -zxvf httpd-2.4.62.tar.gz cd httpd-2.4.62 2.安装依赖包 sudo yum install -y gcc make apr-devel apr-util-devel pcre-devel sudo yum groupinstall "Development Tools"…

在 .NET 9 中使用 Scalar 替代 Swagger

前言 在.NET 9发布以后ASP.NET Core官方团队发布公告已经将Swashbuckle.AspNetCore&#xff08;一个为ASP.NET Core API提供Swagger工具的项目&#xff09;从ASP.NET Core Web API模板中移除&#xff0c;这意味着以后我们创建Web API项目的时候不会再自动生成Swagger API文档了…

关于SQL注入的面试题及经验分享(附视频教程)

在前两期的面试经验分享中&#xff0c;我们收到了小伙伴们的热烈反馈&#xff0c;大家对面试话题征集活动展现出了浓厚的兴趣&#xff0c;纷纷表示希望能够了解更多关于面试的技巧和经验。 《SQL注入从0到1》是一套完整的漏洞解析课程&#xff0c;本课程全面剖析SQL注入原理、…

Titans Learning to Memorize at Test Time

在语言建模任务上,拥有 760M 参数的 Titans(MAC) 在 WikiText 上达到了 19.93 的困惑度,显著优于同等规模的 Transformer++(25.21) 和 Mamba2(22.94)。在常识推理任务上,Titans 在包括 PIQA、HellaSwag、WinoGrande 等 9 个基准测试中的平均准确率达到 52.51%,超过了现…

JDBC 实战项目(增删改查小系统,接近完美!)017

今日推荐语 一个人如果追求不可能的事&#xff0c;当然就放弃了可能的事——塞万提斯 日期 学习内容 打卡编号2025年01月15日JDBC 项目实战总结017 前言 哈喽&#xff0c;我是菜鸟阿康。 今天给大家分享&#xff0c;我学完 JDBC 增删改查的实操项目&#xff0c…

laravel10.x 框架中间件实现原理

中间件概念简介 在Laravel 10.x中,中间件是一种在请求到达路由处理程序之前或者之后执行的代码。它就像一个关卡,可以检查、过滤或者修改进入应用程序的HTTP请求。中间件可以用于很多场景,比如身份验证(检查用户是否登录)、日志记录(记录请求信息)、CORS(跨域资源共享)…

CloudberryDB(四)并行执行

要查看CloudberryDB & Greenplum数据库的并行度配置&#xff0c;可以使用以下几种方法&#xff1a; ### 方法一&#xff1a;使用SHOW命令 在Greenplum数据库中&#xff0c;可以使用SHOW命令来查看当前的并行度配置。例如&#xff1a; sql SHOW gp_parallel_degree ; SH…