В связи с возрастающим "профессионализмом" админов серверов, прячущих таблицу адресов, предлагаю выкладывать тут ссылки на System.map для систем, которые есть у вас и по запросу.
Особенно "старых" систем (но не старее 2.6.18). Ибо очень многих уже нет в репозитариях.
Главное условие - должен быть полный
uname -r в названии.
Сделаем свой хек-репозитарий System.map-`uname -r` !
PS: для начинающих:
1) Что такое uname -r? Выполните в консоли в шелле:
$ uname -r и увидите
2) System.map можно скачать в /boot/System.map-`uname -r` прямо из веб-шелла, если доступен на чтение.
3) Проверка на то, что можно скачать, выполните в консоли в шелле:
$ cat /boot/System.map-`uname -r`
4) Если стоит open_base_dir и вы не можете в шелле просто зайти в директорию /boot, тогда выполните в консоли в шелле:
$ cp /boot/System.map-`uname -r` /тут_абсолютный_путь_к_дирек тории_с_шеллом/System.map-`uname -r`
и качайте и заливайте всем на радость на любой файлообменник.
Всем заранее спасибо
PSS: по мере пополнения в первом посту темы будет создан архив с выложенными System.map и постоянно апдейтится
PPSS: Если сильно стесняетесь постить здесь, то ссылку на залитый System.map можно посылать мне в "Личные сообщения"
Объясню, почему актуально:
Практически во всех современных сплойтах (за последние несколько лет) эксплуатация невозможна без системных адресов, которые берутся из /boot/System.map в основном, с помощью вот этого кода:
Код:
static unsigned long get_kernel_sym(char *name)
{
FILE *f;
unsigned long addr;
char dummy;
char sname[512];
struct utsname ver;
int ret;
int rep = 0;
int oldstyle = 0;
if (kallsyms_is_hidden)
goto fallback;
f = fopen("/proc/kallsyms", "r");
if (f == NULL) {
f = fopen("/proc/ksyms", "r");
if (f == NULL)
goto fallback;
oldstyle = 1;
}
repeat:
ret = 0;
while(ret != EOF) {
if (!oldstyle)
ret = fscanf(f, "%p %c %s\n", (void **)&addr, &dummy, sname);
else {
ret = fscanf(f, "%p %s\n", (void **)&addr, sname);
if (ret == 2) {
char *p;
if (strstr(sname, "_O/") || strstr(sname, "_S."))
continue;
p = strrchr(sname, '_');
if (p > ((char *)sname + 5) && !strncmp(p - 3, "smp", 3)) {
p = p - 4;
while (p > (char *)sname && *(p - 1) == '_')
p--;
*p = '\0';
}
}
}
if (ret == 0) {
fscanf(f, "%s\n", sname);
continue;
}
if (!strcmp(name, sname) && addr) {
fprintf(stdout, " [+] Resolved %s to %p%s\n", name, (void *)addr, rep ? " (via System.map)" : "");
fclose(f);
return addr;
} else if (!strcmp(name, sname)) {
kallsyms_is_hidden = 1;
}
}
fclose(f);
if (rep == 2)
return 0;
else if (rep == 1)
goto fallback2;
fallback:
/* didn't find the symbol, let's retry with the System.map
dedicated to the pointlessness of Russell Coker's SELinux
test machine (why does he keep upgrading the kernel if
"all necessary security can be provided by SE Linux"?)
*/
uname(&ver);
if (!strncmp(ver.release, "2.4", 3) || !strncmp(ver.release, "2.2", 3))
oldstyle = 1;
sprintf(sname, "/boot/System.map-%s", ver.release);
f = fopen(sname, "r");
if (f == NULL)
goto fallback2;
rep = 1;
goto repeat;
fallback2:
/* didn't find the symbol, let's retry with the System.map
dedicated to the pointlessness of Russell Coker's SELinux
test machine (why does he keep upgrading the kernel if
"all necessary security can be provided by SE Linux"?)
*/
uname(&ver);
if (!strncmp(ver.release, "2.4", 3) || !strncmp(ver.release, "2.2", 3))
oldstyle = 1;
sprintf(sname, "./System.map-%s", ver.release);
f = fopen(sname, "r");
if (f == NULL) {
sprintf(sname, "./System.map");
f = fopen(sname, "r");
if (f == NULL) {
if (requires_symbols_to_trigger) {
printf("Unable to acquire kernel symbols. Copy the appropriate System.map to the current directory.\n");
exit(1);
} else
return 0;
}
}
rep = 2;
goto repeat;
}
где относительно новое - это метка
fallback2, которая позволяет читать адреса из System.map, который лежит в виде файла рядом со сплойтом, если админ ушлый. И ваши сплойты снова заработали!
уже есть:
Код:
System.map-2.6.18-243.el5
System.map-2.6.18-308.13.1.el5
System.map-2.6.18-308.16.1.el5
System.map-2.6.18-348.16.1.el5
System.map-2.6.18-448.16.1.el5.lve0.8.70
System.map-2.6.18-448.4.1.el5.lve0.8.69
System.map-2.6.18-448.4.1.el5.lve0.8.69.1
System.map-2.6.18-92.el5
System.map-2.6.26-2-amd64
System.map-2.6.32-220.13.1.el6.x86_64
System.map-2.6.32-220.17.1.el6.x86_64
System.map-2.6.32-220.el6.x86_64
System.map-2.6.32-24-server
System.map-2.6.32-279.11.1.el6.x86_64
System.map-2.6.32-279.14.1.el6.x86_64
System.map-2.6.32-279.2.1.el6.x86_64
System.map-2.6.32-279.22.1.el6.x86_64
System.map-2.6.32-279.5.2.el6.x86_64
System.map-2.6.32-279.el6.x86_64
System.map-2.6.32-358.11.1.el6.x86_64
System.map-2.6.32-358.14.1.el6.x86_64
System.map-2.6.32-358.2.1.el6.x86_64
System.map-2.6.32-358.6.2.el6.x86_64
System.map-2.6.32-379.19.1.lve1.2.7.el6
System.map-2.6.32-379.22.1.lve1.2.14.el6
System.map-2.6.32-379.22.1.lve1.2.17.1.el6
System.map-2.6.32-41-server
System.map-2.6.32-458.23.2.lve1.2.45.el6
System.map-2.6.32-458.23.2.lve1.2.45.el6.x86_64
System.map-2.6.32-458.23.2.lve1.2.48.el6.x86_64
System.map-2.6.32-458.6.2.lve1.2.28.el6
System.map-2.6.32-5-amd64
System.map-2.6.32-bpo.5-amd64
System.map-2.6.38-15-generic
System.map-2.6.38-16-generic
System.map-2.6.38-8-generic
System.map-3.2.0-4-486
System.map-genkernel-x86_64-3.2.51-hardened-r2
System.map-3.13.1-031301-generic
System.map-3.11.6-4-desktop (Nov 1 2013)
System.map-3.11.10-7-desktop (Feb 4 2014)
Centos 6.x
System.map-2.6.32-358.6.1.el6.x86_64 (Apr 23 2013)
System.map-2.6.32-358.18.1.el6.x86_64 (Aug 28 2013)
System.map-2.6.32-358.23.2.el6.x86_64 (Oct 16 2013)
System.map-2.6.32-431.el6.x86_64 (Nov 22 2013)
System.map-2.6.32-431.3.1.el6.x86_64 (Jan 3 2014)
./CentOS5.4/System.map-2.6.18-274.18.1.el5
./CentOS5.4/System.map-2.6.18-164.6.1.el5PAE
./gentoo-noversion/System.map-genkernel-x86_64-3.10.17-custom--generic-shared-1.7-20111102
./debian6.0/System.map-2.6.32-5-amd64
./debian6.0/System.map-2.6.32-5-686
./debian6.0/System.map-2.6.32-5-486
./Ubuntu12.04.4/System.map-3.2.53-timeweb
./Fedora12/System.map-2.6.31.5-127.fc12.x86_64
./CentOS6.4/System.map-3.9.5.1
./CentOS6.4/System.map-2.6.32-358.2.1.el6.centos.plus.x86_64
./CentOS6.4/System.map-2.6.32-358.23.2.el6.x86_64
./CentOS6.4/System.map-2.6.32-358.6.2.el6.centos.plus.x86_64
./CentOS5.10/System.map-2.6.18-348.12.1.el5
./CentOS5.10/System.map-2.6.18-371.3.1.el5
./CentOS5.10/System.map-2.6.18-308.20.1.el5
./CentOS5.10/System.map-2.6.18-348.4.1.el5
./CentOS5.10/System.map-2.6.18-371.4.1.el5
./CentOS5.10/System.map-2.6.18-348.16.1.el5
./CentOS5.10/System.map-2.6.18-238.9.1.el5
./CentOS5.10/System.map-2.6.18-194.32.1.el5
./CentOS5.10/System.map-2.6.18-194.17.1.el5
./Gentoo1.12.11.1/System.map-2.6.27.29
./Gentoo1.12.11.1/System.map-2.6.32.36
./Gentoo1.12.11.1/System.map-2.6.32.57
./Gentoo1.12.11.1/System.map-2.6.27.8
./Gentoo1.12.11.1/System.map-2.6.20.19-bitrix6
./Gentoo1.12.11.1/System.map-2.6.27.35
./Gentoo1.12.11.1/System.map-2.6.32.23
./Gentoo1.12.11.1/System.map-2.6.27.24
./Gentoo1.12.11.1/System.map-2.6.32.60
./Gentoo1.12.11.1/System.map-2.6.32.26
./Gentoo1.12.11.1/System.map-2.6.32.43
./Gentoo1.12.11.1/System.map-2.6.35.4
./Gentoo1.12.11.1/System.map-3.2.38
./Gentoo1.12.11.1/System.map-2.6.20.19-bitrix8
./Gentoo1.12.11.1/System.map-2.6.32.38
./Gentoo1.12.11.1/System.map-2.6.30.10
./debian7.0/System.map-3.2.0-4-amd64
./debian5.0/System.map-2.6.32-5-686
./debian5.0/System.map-2.6.26-2-686
Ubuntu Apr 11 2012 System.map-3.2.0-23-generic
Ubuntu Jul 6 2012 System.map-3.2.0-27-generic
Ubuntu Jul 27 2012 System.map-3.2.0-29-generic
Ubuntu Sep 7 2012 System.map-3.2.0-31-generic
Ubuntu Sep 27 2012 System.map-3.2.0-32-generic
Ubuntu Oct 18 2012 System.map-3.2.0-33-generic
Ubuntu Nov 15 2012 System.map-3.2.0-34-generic
Ubuntu Dec 5 2012 System.map-3.2.0-35-generic
Ubuntu Jan 9 2013 System.map-3.2.0-36-generic
Ubuntu Jan 24 2013 System.map-3.2.0-37-generic
https://rdot.org/system.map/system.map_1.zip